Fix for broken navigation

This commit is contained in:
Selim Mustafaev 2020-06-02 14:02:13 +03:00
parent a51ae611e4
commit f5983b37bb
7 changed files with 102 additions and 18 deletions

View File

@ -40,5 +40,53 @@
landmarkType = "7"> landmarkType = "7">
</BreakpointContent> </BreakpointContent>
</BreakpointProxy> </BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "AA4B069F-D10E-43F0-ABC6-943827D977DB"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AutoCat/Controllers/MainSplitController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "47"
endingLineNumber = "47"
landmarkName = "splitViewController(_:collapseSecondary:onto:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "0D82204D-F9A5-486B-90AC-ED6A0FAE1468"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AutoCat/Controllers/MainSplitController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "12"
endingLineNumber = "12"
landmarkName = "splitViewController(_:showDetail:sender:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "CED2DE1A-E658-4DC2-AF2D-9FFC0A4AC9D1"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "AutoCat/Controllers/MainSplitController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "34"
endingLineNumber = "34"
landmarkName = "splitViewController(_:separateSecondaryFrom:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints> </Breakpoints>
</Bucket> </Bucket>

View File

@ -178,7 +178,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="gzk-86-k5g" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="gzk-86-k5g" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="844" y="948.57571214392806"/> <point key="canvasLocation" x="1783.2" y="948.57571214392806"/>
</scene> </scene>
<!--Owners Controller--> <!--Owners Controller-->
<scene sceneID="0bv-cp-2uj"> <scene sceneID="0bv-cp-2uj">
@ -193,7 +193,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="URC-NW-y2j" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="URC-NW-y2j" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1729" y="949"/> <point key="canvasLocation" x="2668" y="948.57571214392806"/>
</scene> </scene>
<!--Search Controller--> <!--Search Controller-->
<scene sceneID="3Md-yW-a0R"> <scene sceneID="3Md-yW-a0R">
@ -288,7 +288,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="trD-gZ-yAv" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="trD-gZ-yAv" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="3261.5999999999999" y="892.80359820089961"/> <point key="canvasLocation" x="4200.8000000000002" y="892.80359820089961"/>
</scene> </scene>
<!--Check Controller--> <!--Check Controller-->
<scene sceneID="t7Z-yv-ZLH"> <scene sceneID="t7Z-yv-ZLH">
@ -550,7 +550,7 @@
<splitViewController storyboardIdentifier="MainSplitController" id="q8g-Bu-ZOb" customClass="MainSplitController" customModule="AutoCat" customModuleProvider="target" sceneMemberID="viewController"> <splitViewController storyboardIdentifier="MainSplitController" id="q8g-Bu-ZOb" customClass="MainSplitController" customModule="AutoCat" customModuleProvider="target" sceneMemberID="viewController">
<connections> <connections>
<segue destination="s9R-9a-TOT" kind="relationship" relationship="masterViewController" id="Qf1-ZB-fOc"/> <segue destination="s9R-9a-TOT" kind="relationship" relationship="masterViewController" id="Qf1-ZB-fOc"/>
<segue destination="i1k-Y4-pyh" kind="relationship" relationship="detailViewController" id="6tT-Vk-xmm"/> <segue destination="Km4-b6-SGW" kind="relationship" relationship="detailViewController" id="6tT-Vk-xmm"/>
</connections> </connections>
</splitViewController> </splitViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="zgS-sH-9QV" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="zgS-sH-9QV" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
@ -595,6 +595,24 @@
</objects> </objects>
<point key="canvasLocation" x="3261.5999999999999" y="142.57871064467767"/> <point key="canvasLocation" x="3261.5999999999999" y="142.57871064467767"/>
</scene> </scene>
<!--Navigation Controller-->
<scene sceneID="rne-uJ-hKr">
<objects>
<navigationController storyboardIdentifier="ReportNavController" automaticallyAdjustsScrollViewInsets="NO" id="Km4-b6-SGW" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="JaO-tp-k6N">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="i1k-Y4-pyh" kind="relationship" relationship="rootViewController" id="T0m-94-MgM"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="2VV-jB-JET" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="844" y="948.57571214392806"/>
</scene>
</scenes> </scenes>
<resources> <resources>
<image name="eye" catalog="system" width="128" height="81"/> <image name="eye" catalog="system" width="128" height="81"/>

View File

@ -92,7 +92,7 @@ class CheckController: UIViewController, MaskedTextFieldDelegateListener, UITabl
.subscribe(onNext: onReceivedVehicle(_:), onError: { err in .subscribe(onNext: onReceivedVehicle(_:), onError: { err in
if let realm = try? Realm() { if let realm = try? Realm() {
try? realm.write { try? realm.write {
realm.add(Vehicle(numberNormalized), update: .modified) realm.add(Vehicle(numberNormalized), update: .all)
} }
} }
IHProgressHUD.showError(withStatus: err.localizedDescription) IHProgressHUD.showError(withStatus: err.localizedDescription)
@ -114,7 +114,7 @@ class CheckController: UIViewController, MaskedTextFieldDelegateListener, UITabl
func onReceivedVehicle(_ vehicle: Vehicle) { func onReceivedVehicle(_ vehicle: Vehicle) {
if let realm = try? Realm() { if let realm = try? Realm() {
try? realm.write { try? realm.write {
realm.add(vehicle, update: .modified) realm.add(vehicle, update: .all)
} }
} }
@ -125,16 +125,18 @@ class CheckController: UIViewController, MaskedTextFieldDelegateListener, UITabl
func updateDetailController(with vehicle: Vehicle) { func updateDetailController(with vehicle: Vehicle) {
if let splitViewController = self.view.window?.rootViewController as? UISplitViewController if let splitViewController = self.view.window?.rootViewController as? UISplitViewController
{ {
var detail: ReportController? var detail: UINavigationController?
if splitViewController.viewControllers.count == 2 { if splitViewController.viewControllers.count == 2 {
detail = splitViewController.viewControllers.last as? ReportController detail = splitViewController.viewControllers.last as? UINavigationController
} else { } else {
let storyboard = UIStoryboard(name: "Main", bundle: nil) let storyboard = UIStoryboard(name: "Main", bundle: nil)
detail = storyboard.instantiateViewController(identifier: "ReportController") detail = storyboard.instantiateViewController(identifier: "ReportNavController")
} }
if let detail = detail { if let detail = detail {
detail.vehicle = vehicle detail.popToRootViewController(animated: true)
let report = detail.viewControllers.first as? ReportController
report?.vehicle = vehicle
splitViewController.showDetailViewController(detail, sender: self) splitViewController.showDetailViewController(detail, sender: self)
//self.performSegue(withIdentifier: "OpenDetailSegue", sender: self) //self.performSegue(withIdentifier: "OpenDetailSegue", sender: self)
} }

View File

@ -31,8 +31,12 @@ class MainSplitController: UISplitViewController, UISplitViewControllerDelegate
let tabController = splitViewController.viewControllers.first as? UITabBarController let tabController = splitViewController.viewControllers.first as? UITabBarController
let selectedNavController = tabController?.selectedViewController as? UINavigationController let selectedNavController = tabController?.selectedViewController as? UINavigationController
if selectedNavController?.topViewController is ReportController { if selectedNavController?.viewControllers[1] is ReportController {
return selectedNavController?.popViewController(animated: false) if let controllers = selectedNavController?.popToRootViewController(animated: false) {
let nav = UINavigationController()
nav.setViewControllers(controllers, animated: true)
return nav
}
} }
return nil return nil
@ -40,7 +44,12 @@ class MainSplitController: UISplitViewController, UISplitViewControllerDelegate
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool
{ {
guard let detail = secondaryViewController as? ReportController else { return false } guard let detailNav = secondaryViewController as? UINavigationController,
let detail = detailNav.viewControllers.first as? ReportController
else
{
return false
}
if detail.vehicle == nil { if detail.vehicle == nil {
return false return false

View File

@ -37,4 +37,9 @@ class OwnersController: FormViewController {
} }
} }
} }
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
} }

View File

@ -54,16 +54,18 @@ class SearchController: UIViewController, UISearchResultsUpdating {
func updateDetailController(with vehicle: Vehicle) { func updateDetailController(with vehicle: Vehicle) {
if let splitViewController = self.view.window?.rootViewController as? UISplitViewController if let splitViewController = self.view.window?.rootViewController as? UISplitViewController
{ {
var detail: ReportController? var detail: UINavigationController?
if splitViewController.viewControllers.count == 2 { if splitViewController.viewControllers.count == 2 {
detail = splitViewController.viewControllers.last as? ReportController detail = splitViewController.viewControllers.last as? UINavigationController
} else { } else {
let storyboard = UIStoryboard(name: "Main", bundle: nil) let storyboard = UIStoryboard(name: "Main", bundle: nil)
detail = storyboard.instantiateViewController(identifier: "ReportController") detail = storyboard.instantiateViewController(identifier: "ReportNavController")
} }
if let detail = detail { if let detail = detail {
detail.vehicle = vehicle detail.popToRootViewController(animated: true)
let report = detail.viewControllers.first as? ReportController
report?.vehicle = vehicle
splitViewController.showDetailViewController(detail, sender: self) splitViewController.showDetailViewController(detail, sender: self)
//self.performSegue(withIdentifier: "OpenDetailSegue", sender: self) //self.performSegue(withIdentifier: "OpenDetailSegue", sender: self)
} }

View File

@ -7,7 +7,7 @@ class Api {
} }
private static func createRequest<T>(api: String, method: String, body: [String: T]? = nil) -> URLRequest? where T: LosslessStringConvertible { private static func createRequest<T>(api: String, method: String, body: [String: T]? = nil) -> URLRequest? where T: LosslessStringConvertible {
guard var urlComponents = URLComponents(string: Constants.baseUrl + api) else { return nil } guard var urlComponents = URLComponents(string: Constants.debugBaseUrl + api) else { return nil }
if let body = body, method.uppercased() == "GET" { if let body = body, method.uppercased() == "GET" {
urlComponents.queryItems = body.map { URLQueryItem(name: $0, value: String($1)) } urlComponents.queryItems = body.map { URLQueryItem(name: $0, value: String($1)) }