(Люди могут задаться вопросом, что я на годы опаздываю с ответом на этот вопрос, но это может помочь кому-то еще)
Я полагаю, что ваша проблема кроется в том, что при подключении контроллера представления вы отображаете представление предупреждений и в то же время пытаетесь переместить пользователя обратно к представлению. Я бы порекомендовал вам следовать иерархическому подходу, то есть 1003 *
Прежде всего объявите ваше представление оповещения как глобальный объект, т.е.
@property(nonatomic,retain) UIAlertView *sampleAlert;
Теперь напишите свой код для отображения предупреждений там, где это необходимо, например, например:
-(IBAction)buttonClicked:(id)sender
{
self.sampleAlert = [[UIAlertView alloc] initWithTitle:@"test" message:@"test" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[sampleAlert show];
[sampleAlert release];
}
Наконец, попробуйте переместить пользователя к желаемому виду, когда нажата кнопка «Ок», т.е. вам нужно использовать метод alertView didDismissWithButtonIndex
, т.е.
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(alertView == sampleAlert)
{
[self.navigationController popViewControllerAnimated:YES];
}
}
Обратите внимание, что если у вас есть представление предупреждений с несколькими кнопками, вам также необходимо проверить индекс кнопки для различения действий, т.е. проверка с использованием
if(alertView == sampleAlert && buttonIndex == 0)
{
//Do your stuff
}
else
{
//Do something else
}
Это определенно поможет избежать сбоя приложения, спасибо:)