UIAlertView вызывает предупреждение при запуске - PullRequest
0 голосов
/ 16 марта 2012

nilMy приложение должно выполнить несколько проверок, а затем может отображать UIAlertView каждый раз, когда мое приложение становится активным. Для этого я зарегистрировался на didBecomeActiveNotification и запустил свой чек здесь.

Эта проблема возникает всякий раз, когда мой UIAlertView всплывает во время первоначального запуска , это приводит к тому, что «Приложения должны иметь корневой контроллер представления в конце запуска приложения» сообщение. Я предполагаю, что это происходит, потому что UIAlertView показывается перед viewDidAppear:.

Как мне вызвать мой UIAlertView, если не в didBecomeActiveNotification?

2012-03-16 12:21:47.238 App[4181:707] viewDidLoad:
2012-03-16 12:21:47.462 App[4181:707] didBecomeActiveNotification:
2012-03-16 12:21:47.793 App[4181:707] Applications are expected to have a root view controller at the end of application launch
2012-03-16 12:21:48.500 App[4181:707] viewDidAppear:

Редактировать: чтобы вызвать это в новом проекте, сделайте следующее.

1 Новый проект -> Приложение с одним представлением

2 В Viewcontroller.m добавить следующее к viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBecomeActiveNotification:) name:UIApplicationDidBecomeActiveNotification object:nil];

3 В ViewController.m добавить следующий метод

 -(void)didBecomeActiveNotification:(NSNotification *)notification
{   
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
    [alertView show];
    [alertView release];
}

4 Построить и запустить

Ответы [ 3 ]

0 голосов
/ 16 марта 2012

Ваш AppDelegate не может запустить UIAlertViews. Это может быть сделано только с помощью ViewController.

У меня есть похожая вещь в одном из моих приложений, где я хочу что-то проверить, когда приложение запускается или становится активным, и представить пользователю модальный viewController.

Я создал новый класс с одним методом:

+(BOOL)checkIfShouldShowAlert

Затем вы можете вызывать этот метод в каждом из методов viewWillAppear вашего viewControllers, например:

if ([myCheckerClass checkIfShouldShowAlert]) {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle...
    [alertView show];
}

Использование отдельного класса значительно упрощает обновление вашего кода в будущем!

0 голосов
/ 16 марта 2012

Как я уже сказал, ни консольных сообщений, ни предупреждений компилятора. Можете ли вы подтвердить, что сообщение отображается только с отображенным предупреждением, и такого сообщения нет без предупреждения?

enter image description here

0 голосов
/ 16 марта 2012

Как я должен запускать свой UIAlertView, если не в didBecomeActiveNotification?

Я бы запустил его в корневом контроллере представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...