Условен Segue в Swift

Искам да направя бутон "свързване" в моето приложение. И когато го докоснете, ще се отвори нова страница, ако имате правилен вход.

Но прочетох, че не можем да отменим segue, предполагам, че трябва да го извикам ръчно. имаш ли идея

Все пак опитах нещо подобно:

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
Използвайте performSegueWithIdentifier("segueName", sender: self) - person mxb; 08.07.2014
comment
@mxb Възприемайки вашия подход, бихте ли все пак създали (control+drag) segue segueName в Storyboard, от бутона до следващата сцена? Ако е така, ще се задейства ли автоматично след щракване на бутон, без да се проверяват идентификационните данни? - person user3207158; 19.09.2018

В Swift можете да продължите чрез:

Стъпка 1: Вмъкнете продължение от ViewControllerA към ViewControllerB. Продължението трябва да започне от самия ViewControllerA, а не от който и да е контрол (като Button).

Стъпка 2: Дайте на segue уникален идентификатор в сценария. Пример: 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