gpt4 book ai didi

swift - 导航 Controller 到不是初始 View Controller 的 View Controller

转载 作者:行者123 更新时间:2023-11-30 11:53:55 26 4
gpt4 key购买 nike

是否可以向非初始 View Controller 的 View Controller 添加导航 Controller 和选项卡栏?

我的“初始 View Controller ”是登录屏幕。不需要导航 Controller 和标签栏。

当我只是从“编辑器 -> 嵌入 -> …”添加导航 Controller 和选项卡栏时,它们不会出现

登录成功后,我使用以下代码:

if let viewController = self.storyboard?.instantiateViewController(withIdentifier: "mainView") {
UIApplication.shared.keyWindow?.rootViewController = viewController
self.dismiss(animated: true, completion: nil)
}

我使用 Xcode 9 和 swift 4。

谢谢!

最佳答案

我认为您可能看错了。即使不需要,始终将登录 View 作为 View 层次结构中的根 Controller 也是不好的做法。 LoginController 不应该拥有 MainController,但 MainController 应该拥有 LoginController。您应该将主视图(带有导航 Controller /选项卡 Controller )设为 Root View ,并在 viewWillAppear 方法中简单地检查用户是否已通过身份验证;如果用户未经过身份验证,则以模态方式推送登录 Controller 。这样你的 View 层次结构就不那么复杂了。

您可以有一个提供程序类CurrentUser

class CurrentUser {
var user: User? {
guard let userData = UserDefaults.standard.object(forKey: "user") as? Data,
let user = NSKeyedUnarchiver.unarchiveObject(with: userData) as? User else {
return nil
}
return user
}

static let shared = CurrentUser()
}

并在MainController.viewWillAppear

override func viewWillAppear() {
super.viewWillAppear()
guard let user = CurrentUser.shared.user else {
pushViewController(LoginController(), animated: true)
}

// do additional setup
}

只需我的 0.02 美元。

关于swift - 导航 Controller 到不是初始 View Controller 的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48037598/

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