Conditional Segue in Swift

两盒软妹~` 提交于 2019-11-30 03:19:09

问题


I want to do a "connexion" button in my app. And when you tap on it, it will open a new page if you have correct login.

But, I read that we can't undo a segue, I suppose I need to call it manually. Do you have an idea ?

I still tried something like this :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject) {
    if checkLog == true
    {
     //finish   
    }
    else
   {
    // undo
   }
}

@IBAction func ConexTAP(sender: UIButton)
{
 //check login
}

回答1:


You can do the credentials check in the following method in your ViewController:

func shouldPerformSegueWithIdentifier(_ identifier: String!,
                              sender: AnyObject!) -> Bool

In alternative, you can bind the UIButton to an action in your view controller, perform the checks here and then trigger a segue by code.




回答2:


In Swift you can proceed by:

Step 1: Insert a segue from ViewControllerA to ViewControllerB. The segue should start from ViewControllerA itself and not from any control (like Button).

Step 2: Give segue an unique identifier in storyboard. Ex: seageFromAtoB

Step 3 : In your ViewControllerforA.swift write :

if(condition == true) {
    self.performSegueWithIdentifier("seageFromAtoB", sender: self)
}

If you are performing some task in some other Thread then using performSegueWithIdentifier can throw an exception.

If you get this error then you should use :

if(condition==true){
      NSOperationQueue.mainQueue().addOperationWithBlock {
           self.performSegueWithIdentifier("seageFromAtoB", sender: self)
      }
}

This will perform segue from ViewControllerA to ViewControllerB with a specific condition.



来源:https://stackoverflow.com/questions/24614755/conditional-segue-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!