2016-09-30 1 views
0

У моего приложения есть один контроллер вида и один вид. Когда я запускаю свое приложение на симуляторе из xcode, приложение загружается, и оба viewDidLoad, viewDidAppear называются так, как ожидалось.ios simulator viewDidLoad, viewDidAppear не вызывается после закрытия или закрывается

  1. Когда я иду в симулятор домашнего экрана, а затем вернуться в приложение, я ожидаю viewDidLoad называть, но это не так.

  2. Когда я ВЫЙТИ приложение, следуя these directions, и перезапустить приложение свежий, я ожидать оба метода, чтобы назвать, но ни называются.

Если эти события не активируют эти вызовы, то что вызовет эти вызовы? Трудно поверить, что на реальном устройстве viewDidLoad вызывается только один раз - при первом загрузке приложения.

ответ

3

В нем говорится «нагрузка». Это буквально означает, что он вызывается, когда контроллер просмотра загружается (создается экземпляр). Также появляется «появляется», когда появляется представление, например, когда вы его нажимаете или отклоняете над ним другой контроллер представления.

Вещь вы хотите зарегистрировать следующие уведомления

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

В viewDidLoad ваш взгляд контроллера() добавить уведомление.

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, которое нужно вызвать еще раз? Я поддерживаю ваш ответ, поскольку он объясняет случай 1, но я не выбираю его еще как решение, потому что я не понимаю доказательство дела 2. – lf215