gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 15:05:46 25 4
gpt4 key购买 nike

我有两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com