我必须验证某些内容才能决定是继续执行viewDidload()
句子还是执行segue,但是当我调试代码时,在performSegueWithIdentifier调用之后执行即将发生的句子并且用户可以看到当前ViewController的一些UI,我想在ViewController中进行验证,而不是在它的父节点中进行验证。
以下是我的一些代码:
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()
...
}
答案 0 :(得分: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之后它会让其他所有东西都运行
或者如果您使用导航控制器,则可以在知道新视图控制器呈现时执行代码:
class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate {
func viewDidLoad() {
self.navigationController.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
//put your code here
}
}