ios - Swift 实例化ViewControllerWithIdentifier

标签 ios swift

目前我有: 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/

相关文章:

ios - 使用自定义 UIImage 更改 FBLoginView 大小看起来很糟糕

ios - 如何通过iOS应用程序在Facebook上分享应用程序信息?

ios - 如何将任何基数转换为基数 10?

swift - Swift 中的自动布局 : 'String' is not identical to 'NSObject'

ios - 无法使用类型为 '*' 的参数列表调用 '($T7, $T14)'

ios - CGAffineTransform:如何计算乘法CGAffineTransform?

android - 用于应用程序下载和卸载计数 + 应用程序评级的 Google Play 商店 API

ios - 如何为 UIControl/UIButton 设置从一种状态到另一种状态的动画转换?

swift - CallbackInstrument 的 MIDIEndpointRef 是什么?

ios - 使 UIPinchGestureRecognizer 在 imageview 之外工作,就像 Instagram 故事中的贴纸一样