Условный переход в Swift

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

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

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

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

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

person 1L30    schedule 07.07.2014    source источник


Ответы (2)


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

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

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

person mxb    schedule 07.07.2014
comment
Спасибо работает! Не могли бы вы показать мне, как вызвать переход по коду? - person 1L30; 08.07.2014
comment
Используйте 1_ - person mxb; 08.07.2014
comment
@mxb Принимая ваш подход, вы бы все равно создали (управление + перетаскивание) переход segueName на раскадровке от кнопки к следующей сцене? Если да, будет ли переход автоматически запускаться при нажатии кнопки без проверки учетных данных? - person user3207158; 19.09.2018

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

Шаг 1: Вставьте переход от ViewControllerA к ViewControllerB. Переход должен начинаться с самого ViewControllerA, а не с какого-либо элемента управления (например, кнопки).

Шаг 2: Дайте переходу уникальный идентификатор в раскадровке. Пример: SeageFromAtoB

Шаг 3: В вашем ViewControllerforA.swift напишите:

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

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

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

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

Это выполнит переход от ViewControllerA к ViewControllerB с определенным условием.

person Pulkit Talwar    schedule 02.03.2017