2016-06-07 4 views
-1

Мне нужно проверить что-то, чтобы решить, продолжаю ли я выполнение предложений viewDidload() или выполняю segue, но когда я отлаживаю код, выполнение предстоящих предложений после вызова функции executeSegueWithIdentifier продолжить, и пользователь увидит некоторый пользовательский интерфейс текущего ViewController, я хотел бы сделать эту проверку в этом ViewController вместо того, чтобы делать это внутри своего родителя.performSegueWithIdentifier не выполняется немедленно

Вот некоторые из моего кода:

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() 
... 
} 

ответ

1

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

Вы могли бы хотеть попробовать реализовать это где-то ..

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) 
} 

А потом называть это так:

runAfterDelay(delay: 0.5, { 

    setBackBtn() 

    self.lblResponse.text = questionD as? String; 

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

Это не будет запускать SEGUE сразу, как вы просили ... но это сделало бы все остальное немного после вашего segue.

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

class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate { 

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

func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) { 
    //put your code here 
} 
} 
Смежные вопросы