Как передавать данные между AppDelegate и SecondViewController

У меня есть экземпляр @property NSDate, и он получает время в методе - (void)applicationWillResignActive:(UIApplication *)application .

У меня есть ViewController и SecondController, подключенные к Storyboard, поэтому в коде в блоке реализации AppDelegate у меня нет экземпляров ViewController и SecondViewController. Метод - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions возвращает только YES.

Проблема в том, что я должен передать время от экземпляра @property NSDate до SecondViewController, которое отображается, когда приложение становится активным, но я не знаю, как я могу проверить, отображается ли SecondViewController после того, как приложение выходит из фона.

Я знаю, что могу использовать AppDelegate:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

А потом получить его NSDate @property, но как я могу проверить, когда я должен получить эти данные?

Какой метод ViewController следует использовать?


person Tomasz Szulc    schedule 12.09.2012    source источник


Ответы (1)


Если вы хотите, чтобы представление SecondViewController всегда имело текущее значение даты, когда оно появляется, получите его из модели данных (в данном случае AppDelegate) во время viewWillAppear:.

person Phillip Mills    schedule 12.09.2012
comment
Проблема в том, что когда я добавляю NSLog в метод SecondViewController viewWillAppar:, я вижу какие-либо результаты. Это представление отображается, когда я нажимаю кнопку «Домой», а когда я возвращаюсь, тоже отображается, поэтому viewWillAppear не вызывается. - person Tomasz Szulc; 13.09.2012
comment
Это странно. Что заставляет использовать SecondViewController? Если это переход, что запускает код перехода... или какое-то действие пользователя? - person Phillip Mills; 13.09.2012
comment
Да, у меня есть ViewController и UITableView. Когда я выбираю Cell, Modal Segue приложение отображает SecondViewController. И когда отображается это SecondViewController, я хочу заблокировать iDevice, но когда я это делаю, тогда AppDelegate получаю дату, когда я это делаю, и когда приложение становится активным, я хочу получить данные от AppDelegate и отредактировать их в SecondViewController. Любой viewWill... или viewDid... не работает с SecondViewController :/ - person Tomasz Szulc; 13.09.2012
comment
В этом случае пусть ваш SecondViewController прослушает уведомление UIApplicationDidBecomeActiveNotification. Вам должны позвонить, когда устройство будет разблокировано. - person Phillip Mills; 13.09.2012