您已经告诉第二个视图控制器在第一个视图控制器选择选项(登录或注册)时要做什么。我假设您可以通过简单地声明一个标志并将其发送到第二个视图控制器来做到这一点,例如:
在你的第二个视图控制器中声明一个布尔变量(比如说shouldBehavesAsLogin),这意味着如果选择是登录,它应该是true:
// Controller that could represents signin or signup:
class SecondViewController: UIViewController {
//...
var shouldBehavesAsLogin = false
// ...
}
因此,您可以根据点击的按钮,第一个视图控制器来确定应该分配给它的值是什么:
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 让控制器作为登录还是false 执行相反操作。
附加提示:
如果为每个按钮添加 IBActions 的目的只是导航到第二个视图控制器,我建议让两个按钮具有相同的 IBAction,但您应该让 sender 的类型为 @987654329 @ 而不是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
}