1 UIButton两个独立的Segues

时间:2017-08-02 20:35:44

标签: ios swift segue

我有一个由SegmentedController控制的UIButton现在我的问题是:如何根据单个按钮的结果呈现一个popover segue。基本上,我有一个按钮,可以设置为登录或注册。如果用户登录,那么进入主屏幕工作正常等,但当我选择注册选项时,按钮变为注册,当我点击我想要一个弹出窗口模态呈现当前用户注册的屏幕。我当前的代码允许我登录,但当按钮切换到注册选项时,我不能为我的生活工作,并且它现在已经扭曲了我的大脑6小时。我已经阅读了很多关于segues的内容,我无法弄明白....你的帮助将会非常受欢迎。

Picture of my code if it helps

4 个答案:

答案 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)
        }
    }

viewlayout

connections

答案 3 :(得分:0)

确保在IB中创建两个手动分段,而不是动作分段。通过从发送方视图控制器拖动到目标视图控制器来执行此操作。确保为每个人提供唯一的segue标识符。

然后,为按钮创建一个IBAction,并根据必要的检查有条件地调用其中一个segue。