目前我有: 1.初始ViewController——AppStateViewController 2.TabBarController-AuthorizedSessionViewController 3. ViewController - UnauthorizedSessionViewController
AppStateViewController 代码 - https://gist.github.com/nspavlo/de7a03f80e57694a12ba
如果我在 viewDidLoad() 中调用 switchToAuthorizedSessionViewController() 和 switchToUnauthorizedSessionViewController(),则会出现 AuthorizedSessionViewController 而不是 UnauthorizedSessionViewController。
我的目标是在 didFinishLaunchingWithOptions 上加载正确的 Controller ,并在 appState 更改时更改它。
最佳答案
为什么在你的应用程序中使用 switchToAuthorizedSessionViewController() switchToViewController() 方法:
func switchToViewController(identifier: String) {
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier(identifier) as UIViewController
self.navigationController?.setViewControllers([viewController], animated: false)
**switchToAuthorizedSessionViewController()**
}
你将创建一个无限循环,试试这个:
class AppStateViewController: UIViewController {
var authorized: Bool = false {
didSet {
if authorized {
switchToAuthorizedSessionViewController()
} else {
switchToUnauthorizedSessionViewController()
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.authorized = false
}
func switchToAuthorizedSessionViewController() {
let sessionViewControllerID = "AuthorizedSessionViewController"
switchToViewController(sessionViewControllerID)
}
func switchToUnauthorizedSessionViewController() {
let sessionViewControllerID = "UnauthorizedSessionViewController"
switchToViewController(sessionViewControllerID)
}
func switchToViewController(identifier: String) {
let viewController =self.storyboard?.instantiateViewControllerWithIdentifier(identifier) as UIViewController
self.navigationController?.setViewControllers([viewController], animated: false)
}
}
有了这个,您将观察属性 authorized 并且每次您更改它时,它都会调用正确的方法。
关于ios - Swift 实例化ViewControllerWithIdentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25914744/