2016-06-07 3 views
-1

viewDidload() 문장의 실행을 계속할지 또는 segue를 수행 할지를 결정하기 위해 무언가를 검증해야하지만 performSegueWithIdentifier 호출 이후에 곧 나오는 문장을 디버깅 할 때 계속하고 사용자가 현재 ViewController의 UI 중 일부를 보게되면 상위 내에서 수행하는 대신 해당 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

당신은 0.5 초 어쩌면의 지연 후에 코드의 라인을 실행할 수 있습니다. 당신이 질문처럼

runAfterDelay(delay: 0.5, { 

    setBackBtn() 

    self.lblResponse.text = questionD as? String; 

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

이 즉시 SEGUE를 실행하지 않을 :하지만 ...

당신은이 곳을 구현하려고 싶어 있습니다 ..

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

그리고 다음과 같이 그것을 호출 그것은 당신의 segue 조금 후에 다른 모든 실행하게 만들었습니다

또는 만약 당신이 새로운보기 컨트롤러가 presen 알고 코드를 실행할 수있는 탐색 컨트롤러를 사용하는 경우 팅 :

class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate { 

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

func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) { 
    //put your code here 
} 
} 
관련 문제