我有一个由SegmentedController控制的UIButton现在我的问题是:如何根据单个按钮的结果呈现一个popover segue。基本上,我有一个按钮,可以设置为登录或注册。如果用户登录,那么进入主屏幕工作正常等,但当我选择注册选项时,按钮变为注册,当我点击我想要一个弹出窗口模态呈现当前用户注册的屏幕。我当前的代码允许我登录,但当按钮切换到注册选项时,我不能为我的生活工作,并且它现在已经扭曲了我的大脑6小时。我已经阅读了很多关于segues的内容,我无法弄明白....你的帮助将会非常受欢迎。
答案 0 :(得分:1)
这是因为您的segue已附加到您的按钮上。要解决此问题,请将segue附加到视图控制器,并为其提供标识符。然后为您的按钮创建一个IBAction并执行您需要的任何检查,并使用您设置的标识符使用performSegue。
答案 1 :(得分:0)
在方法 LoginAction 中,检查布尔 isSignin 是真还是假。 如果是这样,那么你就去登录了。 如果不是这样,那么您可以进行注册过程。但是,这里似乎有一个错误,因为在第二个范围内,你再次检查用户是否是signinIn,但是代码执行是因为用户没有登录,并且你要求另一个检查,你已经在另一个内部执行了检查范围,当然没有通过,因为 isSignin 变量是false。正确的代码应该是
@IBAction func LoginAction(_ sender:UIButton){
//You check if it s true
if isSignin {
//User login
}
else {
//You should not check for the value of isSignin here!
//User registration
}
答案 2 :(得分:0)
创建了一个演示视图,因为您的逻辑似乎是正确的。我建议您仔细检查if / else语句,因为如果您签署{...} else {if signUp {..}}
@IBAction func pressedTheButton(_ sender: Any) {
if segmentedController.selectedSegmentIndex == 0 {
//go to red view
performSegue(withIdentifier: "redViewSegue", sender: nil)
} else {
//go to green view
performSegue(withIdentifier: "greenViewSegue", sender: nil)
}
}
答案 3 :(得分:0)
确保在IB中创建两个手动分段,而不是动作分段。通过从发送方视图控制器拖动到目标视图控制器来执行此操作。确保为每个人提供唯一的segue标识符。
然后,为按钮创建一个IBAction,并根据必要的检查有条件地调用其中一个segue。