gpt4 book ai didi

ios - 如何重置导航 View Controller ios swift

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:44 30 4
gpt4 key购买 nike

我有一个带有 Slider 的应用程序,我在其中提供了用于在用户之间切换的下拉列表。一旦应用用户切换到其他用户,我想重置整个导航流程并从第一个屏幕开始。

例如

屏幕 A -> 屏幕 B -> 屏幕 C -> 屏幕 D -> 用户打开 slider 并切换用户 -> 跳转到屏幕 A(从导航中删除其他屏幕)。我们可以在这里考虑 gmail 应用程序示例,我们可以在其中切换不同的帐户,并且 gmail 应用程序将用户重定向到主收件箱。

编辑:

我正在使用 git 上可用的 slider 菜单库。

https://github.com/dekatotoro/SlideMenuControllerSwift

    class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var navigationController: UINavigationController?
var storyboard: UIStoryboard?
var leftViewController: LeftSidePanelViewController?
// var uuid: String?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if Utility.getUserStatus() == 0 {
storyboard = UIStoryboard(name: "Main", bundle: nil)
let mainViewController = storyboard!.instantiateViewControllerWithIdentifier("LoginViewController") as! LoginViewController

leftViewController = storyboard!.instantiateViewControllerWithIdentifier("LeftSidePanelViewController") as? LeftSidePanelViewController

navigationController = UINavigationController(rootViewController: mainViewController)
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
leftViewController!.mainViewController = navigationController

let slideMenuController = ExSlideMenuController(mainViewController:navigationController!, leftMenuViewController: leftViewController!)
slideMenuController.automaticallyAdjustsScrollViewInsets = true
slideMenuController.delegate = mainViewController

self.window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()
Utility.setUUID(UIDevice.currentDevice().identifierForVendor!.UUIDString)
} else {
storyboard = UIStoryboard(name: "Main", bundle: nil)
let mainViewController = storyboard!.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
leftViewController = storyboard!.instantiateViewControllerWithIdentifier("LeftSidePanelViewController") as? LeftSidePanelViewController
navigationController = UINavigationController(rootViewController: mainViewController)
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
leftViewController!.mainViewController = navigationController

let slideMenuController = ExSlideMenuController(mainViewController:navigationController!, leftMenuViewController: leftViewController!)
slideMenuController.automaticallyAdjustsScrollViewInsets = true
slideMenuController.delegate = mainViewController

self.window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()
}
return true
}
}

我为此尝试了不同的解决方案,但似乎没有任何效果。

var alreadyPushed = false
//Check if the view was already pushed
if let viewControllers = self.navigationController?.viewControllers {
for viewController in viewControllers {
if let viewController = viewController as? HomeViewController {
self.navigationController?.popToViewController(viewController, animated: true);
print(" Push Your Controller")
alreadyPushed = true
break
}
}
}

if alreadyPushed == false {
print("Pushing...")
let YourControllerObject = self.storyboard?.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
self.navigationController?.presentViewController(YourControllerObject, animated: true, completion: nil)
// HERE also tried pushViewController but that was also not working..
self.navigationController?.dismissViewControllerAnimated(false, completion: nil)

}

解决方案 2:-

还尝试了 self.navigationController?.viewController.removeAll() 然后推送/呈现 HomeView 但这也不起作用。

任何有解决此问题的建议或技巧的人。

最佳答案

一种非常快速的方法:

// Put this line in the UIViewController where you want to reset navigation
self.navigationController?.viewControllers = [self]

您将删除 View Controller 堆栈并重置导航。

关于ios - 如何重置导航 View Controller ios swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655561/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com