【问题标题】:Cannot perform segue to exit无法执行 segue 退出
【发布时间】:2017-02-05 02:07:00
【问题描述】:

我有一个视图控制器,它负责对用户进行身份验证。当使用登录时,我想回到父视图控制器。按照this 指南,我创建了一个从auth 视图控制器到它的出口的segue。当我尝试在代码中调用它时,我什么也没有发生。

这是我的代码:

import UIKit

import Firebase
import FirebaseAuth
import GoogleSignIn

class AuthVC: UIViewController, GIDSignInUIDelegate {

    @IBAction func unwindAuth(sender: UIStoryboardSegue) {
        print("'unwindAuth' called")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        GIDSignIn.sharedInstance().uiDelegate = self

        FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) in
            if FIRAuth.auth()?.currentUser != nil {

                print(self.shouldPerformSegue(withIdentifier: "unwindSegue", sender: nil))

                self.performSegue(withIdentifier: "unwindAuthSegue", sender: nil)

            }
        }
    }
}

单击登录按钮后,我在控制台中从self.shouldPerformSegue 获得true,但没有其他任何内容(没有错误,也没有任何反应)。

我正在使用 Xcode 版本 8.3 beta (8W109m)。

这几天我一直在寻找解决方案。

免责声明:我是 Xcode 的新手,但我已经编程了将近 10 年。不过,我没有接受过正规培训。

【问题讨论】:

  • 您没有仔细阅读它:“..您在视图控制器中指定了一个展开操作的名称,您希望 segue 展开到”。您已将其放入要从中展开的视图控制器中。
  • 感谢您的回答。有没有办法反过来呢?我可以从第一个控制器监听登录,但要知道它来自身份验证视图控制器,我必须设置某种状态变量。这似乎不是最佳实践。另外,为什么我没有收到错误而不是什么都没有?
  • 听起来您想将数据从第二个视图控制器传回给第一个?如果您环顾四周,有很多关于如何做到这一点的过去问题。
  • 好的,谢谢。创建一个答案,我会选择它。

标签: ios iphone swift xcode


【解决方案1】:

unwind segue 动作必须放置在您要转回的视图控制器上,而不是您要离开的视图控制器上。

如果你想传回数据,那么你可以使用委托

Passing data back from view controllers Xcode

【讨论】:

  • 非常感谢。现在可以了。我所要做的就是将@IBAction func 放在父视图控制器中。 self.performSegue 必须进入子视图控制器,因为 segue 属于该类,所以我什至不需要链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多