ios - 如何识别目标 View Controller 上的 segue 标识符?

标签 ios swift swift3

我有两个 View Controller ,第一个有两个按钮,注册和登录,第二个 VC 做注册和登录的功能(我写的函数在注册和登录模式之间切换),是否可以识别用户在第一个 VC 中按下登录/注册按钮,以便在执行 segue 时在第二个 VC 中调用正确的函数?

最佳答案

您已经告诉第二个 View Controller 根据第一个 View Controller 选择的选项(登录或注册)做什么。我假设您可以通过简单地声明一个标志并将其发送到第二个 View Controller 来做到这一点,例如:

在你的第二个 View Controller 中声明一个 bool 变量(比方说shouldBehavesAsLogin)这意味着如果选择是登录它应该是true:

// Controller that could represents signin or signup:
class SecondViewController: UIViewController {
    //...

    var shouldBehavesAsLogin = false

    // ...
}

因此您可以根据第一个 View Controller 点击的按钮来确定应该分配给它的值是什么:

class FirstViewController: UIViewController {
    // ...

    private var isLoginTapped = false
    @IBAction func signinTapped(sender: UIButton) {
        isLoginTapped = true
    }

    @IBAction func signupTapped(sender: UIButton) {
        // nothing to do here, isLoginTapped is false by default...
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "MySegue"{
            if let nextViewController = segue.destination as? SecondViewController {
                nextViewController.shouldBehavesAsLogin = isLoginTapped
            }
        }
    }

    // ...
}

因此,您所要做的就是检查 shouldBehavesAsLogin 的值是 true 让 Controller 表现为登录还是 false做相反的事情。


附加提示:

如果为每个按钮添加 IBAction 的目的只是导航到第二个 View Controller ,我建议让两个按钮具有相同的 IBAction,但是你应该让 senderUIButton 类型而不是 Any 类型,因此你可以做 - 例如 - :

@IBAction func aButtonTapped(sender: UIButton) {
    // do the default behvior for both signin and signup (navigate to the second controller)

    // signinButton is the button you tap for navigating to second controller to behaves as signin
    isLoginTapped = sender === signinButton ? true : false
}

关于ios - 如何识别目标 View Controller 上的 segue 标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487255/

相关文章:

ios - 在矩形 UIView 的底部添加三角形提示

iphone - 打开 + UIDocumentInteractionController : how to filter options in SDK iOS 6 (canPerformActions is deprecated)

ios - 使用 UISegmentedControl 切换 viewController

ios - UI 旋转手势识别器捕捉直角

ios - 每天在特定时间重置特定值

ios - 在 iOS 中使用 Firebase 的云函数

ios - Swift3:组合两个 uint64 类型选项

iOS swift 应用程序在文本字段中点击崩溃(NSNull 长度 - 实例无法识别的选择器)

swift - Bool.hashValue 转换为 Int 有效吗?

ios - 随机生成节点