每次导航控制器弹出堆栈

时间:2016-09-05 15:53:29

标签: ios swift navigation segue

我有这个类,使用以下代码。基本上每次显示此页面时,应在检查用户是否登录后立即执行segue。

   class UserExistsOrNotViewController: UIViewController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        tabBarController?.delegate = self
        // Do any additional setup after loading the view.
    }
    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
        viewController.viewDidAppear(true)
        print("test")
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        let realm = try! Realm()
        let openSearchItem = realm.objects(User).count
        if openSearchItem == 0 {
            performSegueWithIdentifier("notLoggedIn", sender: self)
        } else {
            performSegueWithIdentifier("loggedIn", sender: self)
        }

    }

我遇到的问题是,一旦我从堆栈中弹出上一页,并且它返回到此代码,就不会执行segue。如果我将其放在viewWillAppear下,我的导航已损坏。

  

在意外状态下完成导航转换。   导航栏子视图树可能已损坏)

我不知道现在该做什么。我正在寻找的东西:当我从导航控制器弹出我的视图控制器时,上面的类应该每次都检查用户是否登录,并且转到正确的页面。

1 个答案:

答案 0 :(得分:0)

如果您的ViewWillAppear被触发,但ViewDidAppear未被触发。检查您是否遗漏super.viewDidAppear(animated)。请参阅讨论here