2016-09-30 2 views
0

내 앱에 뷰 컨트롤러가 하나 있고 뷰가 하나 있습니다. xcode에서 시뮬레이터에서 내 응용 프로그램을 실행할 때 응용 프로그램이로드되고 viewDidLoad, viewDidAppear이 모두 예상대로 호출됩니다.ios 시뮬레이터 viewDidLoad, close 또는 종료 후 viewDidAppear이 호출되지 않습니다.

  1. 내가 시뮬레이터 홈 화면으로 이동 한 후 다시 응용 프로그램에 와서 나는 viewDidLoad 호출 할 것으로 예상하지만,하지 않습니다.

  2. 내가 these directions에 따라 응용 프로그램을 종료하지 않으며, 내가 두 가지 방법이 호출 될 것으로 예상 , 새로운 응용 프로그램을 다시 시작하지만, 어느 쪽도 이라고합니다.

이러한 이벤트가 이러한 호출을 트리거하지 않으면 그 호출은 무엇입니까? 실제 장치에서 viewDidLoad는 앱이 처음로드 될 때 한 번만 호출됩니다.

답변

3

"로드"라고 말합니다. 말 그대로 뷰 컨트롤러가로드 (인스턴스화) 될 때 호출된다는 의미입니다. 또한 당신이 그것을 밀거나 위의 다른 뷰 컨트롤러를 닫을 때처럼 뷰가 나타나면 "나타나는"이 호출됩니다.

당신이 원하는 것은() 통지를 추가하려면 뷰 컨트롤러의 viewDidLoad에서 다음 통지

static let UIApplicationWillEnterForeground: NSNotification.Name 
static let UIApplicationDidEnterBackground: NSNotification.Name 
static let UIApplicationDidBecomeActive: NSNotification.Name 

을 등록 할 수 있습니다.

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.applicationDidBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil) 

그런 다음 앱이 백그라운드에서 다시 활성화되면 다음 메소드가 호출됩니다.

func applicationDidBecomeActive() { 
    // Update your view controller 
} 

사례 2 : 명령어와 같은 응용 프로그램을 종료하면

, 디버그 세션이 때문에 브레이크 포인트 및 로그가 작동하지 않습니다 종료됩니다. 앱을 종료하고 중단 점 또는 로그를 확인하려면 Xcode에서 다시 실행하십시오.

+0

일단 앱을 설치하면 'viewDidLoad'는 한 번만 호출됩니까? – lf215

+0

예. 인스턴스화되어 모든 속성이로드 될 때만 한 번만 호출됩니다. –

+0

휴대 전화를 껐다가 다시 켜면 viewDidLoad를 다시 호출해야합니다. 나는 당신의 답을 upvoting 케이스 1을 설명하지만 나는 아직 솔루션으로 그것을 선택하지 않을거야 왜냐하면 나는 케이스 2 증거를 이해하지 못하기 때문에. – lf215

관련 문제