【问题标题】:Do segue every time navigationcontroller pops stack每次navigationcontroller弹出堆栈时都进行segue
【发布时间】:2016-09-05 15:53:29
【问题描述】:

我有这门课,代码如下。基本上每次显示此页面时,应在检查用户是否登录后立即执行转场。

   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 下,我的导航就会损坏。

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

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

【问题讨论】:

    标签: ios swift navigation segue


    【解决方案1】:

    如果您的 ViewWillAppear 被触发,但 ViewDidAppear 没有。检查您是否缺少super.viewDidAppear(animated)。见讨论here

    【讨论】:

    • 嗨,我添加了它,但它对解雇没有影响。然而,我也有一个 tabBarController(上面的代码是第一个入口点)
    • 你重写了 tabBarController 的 viewDidAppear 了吗?
    • 您好,我尝试实施您的建议,但它似乎对我不起作用。我更新了代码
    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多