2016-08-04 2 views
0

이 기능은 내 viewDidLoad에서 호출됩니다. 오류는 발생하지 않지만 아무 일도 일어나지 않습니다. 내가 인쇄하라고 명령했기 때문에 그것은 확실히 불려지고있다.신속하게 팝업하는 데 문제가 없습니다.

func makeAlert() 
    { 
     let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.Alert) 
     // Create the actions 
     let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { 
     UIAlertAction in 
     NSLog("OK Pressed") 
     } 
     let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { 
     UIAlertAction in 
     NSLog("Cancel Pressed") 
     } 
     // Add the actions 
     alertController.addAction(okAction) 
     alertController.addAction(cancelAction) 
     // Present the controller 
     self.presentViewController(alertController, animated: true, completion: nil) 
+1

봅니다 ViewDidAppear에 makeAlert()를 호출 할 수 있습니다. –

+0

그 덕분에 너무 많이 일했습니다. – Steve

+0

다행니다. viewDidLoad에 많은 코드를 넣지 마십시오. 그렇지 않으면보기 전환으로 지연됩니다. –

답변

1

여기서 문제는 당신이 제시 뷰 컨트롤러 (당신의 viewDidLoad와 함께 한) 전에 alertController를 표시하려고하는 것입니다 화면에 표시됩니다 : 여기

는 경고에 대한 코드입니다. viewDidLoad()은 뷰 컨트롤러가 메모리에로드 된 후에 호출됩니다. 뷰가 뷰 계층에있을 때 반드시 그렇지는 않습니다.

따라서, viewDidAppear(_:)makeAlert() 전화 :

override func viewDidAppear(animated: Bool) { 
    makeAlert() 
} 

이것은 뷰 컨트롤러가 이미 표시되어 있음을 보장하고 alertController을 제시 할 수 있습니다. 여기에 대한 viewDidLoad()viewDidAppear(_:) 읽기

도움이된다 : https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/