2016-06-07 18 views
-1

Ich muss etwas validieren, um zu entscheiden, ob ich mit der Ausführung der viewDidload() Sätze fortfahre oder ich führe einen Übergang, aber wenn ich den Code debuggen, die Ausführung der nächsten Sätze nach dem Aufruf performSegueWithIdentifier Fortfahren und der Benutzer bekommt etwas von der Benutzeroberfläche des aktuellen ViewControllers zu sehen. Ich möchte diese Validierung innerhalb dieses ViewControllers vornehmen, anstatt es innerhalb des übergeordneten ViewControllers zu machen.performSegueWithIdentifier nicht sofort ausgeführt

Hier einige meines Code:

override func viewDidLoad() { 
    super.viewDidLoad() 
    let questionD = self.question![DECRIPTION] 
    let type = self.question![TYPE] as? String; 
    if type == "60" { 
     performSegueWithIdentifier("showCameraSegue", sender: self) 
    } 
    setBackBtn() 

    self.lblResponse.text = questionD as? String; 

    lblResponse.backgroundColor = UIColor.whiteColor() 
... 
} 

Antwort

1

Sie die Codezeilen nach einer Verzögerung von einem vielleicht zweiten einhalb ausführen können, so dass die neuen View-Controller zeigen werden, bevor der Code ausgeführt wird.

könnten Sie wollen versuchen, diese irgendwo Implementierung ..

func runAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) { 
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))) 
    dispatch_after(time, dispatch_get_main_queue(), block) 
} 

Und dann ist es wie so nennen:

runAfterDelay(delay: 0.5, { 

    setBackBtn() 

    self.lblResponse.text = questionD as? String; 

    lblResponse.backgroundColor = UIColor.whiteColor() 
    ... 
}) 

Dies würde den Übergang nicht sofort laufen wie Sie gefragt ... aber es würde alles andere ein wenig nach Ihrem segue laufen lassen

Oder vielleicht, wenn Sie einen Navigationscontroller verwenden, können Sie den Code ausführen, wenn Sie wissen, dass der neue Ansicht Controller presen ist ting:

class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate { 

func viewDidLoad() { 
    self.navigationController.delegate = self 
} 

func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) { 
    //put your code here 
} 
} 
Verwandte Themen