2013-09-09 5 views
1

Я пытаюсь получить доступ к текущему представлению из своего App Delegate. Внутри моего делегата приложения есть событие с таймированием, которое обращается к удаленному серверу каждые 30 секунд. Если он находит необходимость обновлять текущие данные, мне нужно, чтобы он показывал отображение прогресса «Подождите» по текущему виду.Доступ к текущему виду из AppDelegate

Я хочу использовать DejalActivityView для отображения окна «Пожалуйста, подождите» в текущем активном представлении, однако для этого в качестве входного параметра требуется активное представление в настоящее время, и я не могу найти способ получить его от App Delegate.

Self.Window.RootViewController возвращает Null, текущий вид или UIViewController не видны, что я могу найти у делегата.

Любая помощь очень ценится.

ответ

5

Вместо этого вам нужно использовать другую архитектуру, например, уведомления.

В AppDelegate, где вы собираетесь это сделать, заменить его следующим образом:

[[NSNotificationCenter defaultCenter] postNotificationName:@"showPleaseWaitAlert" object:nil]; 

Затем реализовать метод, как это в вашем контроллере представления:

-(void)showPleaseWait { 
    //Show your dialog here 
} 

Тогда, в такой метод, как viewDidLoad, сделать это:

[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showPleaseWait) name:@"showPleaseWaitAlert" object:nil] 
+0

Aha! Благодарим вас за это, недавно пришли к разработке iOS из ASP.Net, мне все еще не хватает понимания. Я очень благодарен за это объяснение «общего подхода». Ты, мой друг, потрясающий. Большое спасибо! –

+0

@CraigMoore: Спасибо! Всегда рад помочь. Развитие iOS не совсем похоже на что-либо еще. Это немного привыкает. – Linuxios

Смежные вопросы