Условный сегмент в Swift


Я хочу сделать кнопку" connexion " в моем приложении. И когда вы нажмете на него, он откроет новую страницу, если у вас есть правильный логин.

Но я читал, что мы не можем отменить сегмент, я полагаю, что мне нужно вызвать его вручную. У тебя есть идея ?

Я все-таки попробовал что-то вроде этого:

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

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

2 ответа:

Вы можете выполнить проверку учетных данных следующим способом в вашем ViewController:

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

В качестве альтернативы можно привязать UIButton к действию в контроллере вида, выполнить проверку здесь, а затем запустить сегмент по коду.

В Swift вы можете продолжить:

Шаг 1: Вставьте сегмент из ViewControllerA в ViewControllerB. Сегмент должен начинаться с самого ViewController, а не с какого-либо элемента управления (например, кнопки). Шаг 2: Дайте Сегу уникальный идентификатор в раскадровке. Пример: seageFromAtoB

Шаг 3: в вашем ViewControllerforA.Свифт пишет:

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

Если вы выполняете какую-то задачу в каком-то другом потоке, то использование performSegueWithIdentifier может вызвать исключение.

Если вы получить эту ошибку, то вы должны использовать:

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

Это будет выполнять сегмент от ViewControllerA к ViewControllerB с определенным условием.