Почему мой UIAlertView не отображается на экране до того, как мое представление помещается в стек навигации?
Вот код в порядке звонков. UIAlertView
на экране, когда вызывается этот кусок кода:
[upcAlertView dismissWithClickedButtonIndex:0 animated:YES];
[self.navigationController pushViewController:editController animated:YES];
Проблема заключается в UIAlertView
НЕ удаляет с экрана по времени editController
появляется. Мне нужно, чтобы это произошло, потому что у меня в viewWillAppear
из editController
поэтому я хочу добавить колесо быстрого прогресса (но мне нужно, чтобы диалог исчез). Этот код вызывается из основного потока.
У кого-нибудь есть понимание?
3 ответа
Решение
Проверьте документацию UIAlertViewDelegate, что более важно, метод
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;
Когда этот метод вызывается, вы можете затем нажать viewcontroller, чтобы вы знали, что он отключен перед нажатием.
Вот так:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
[self.navigationController pushViewController:editController animated:YES];
}
Ваш UIAlertView соответствует протоколу UIAlertViewDelegate?
Вам нужно будет обновить ваши:
.h файл
@interface YourClass : YourClassSuperClass <UIAlertViewDelegate>
.m файл
UIAlertView *alert = //alloc init
[alert setDelegate: self];
добавьте этот метод:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (buttonIndex)
case(0):
{
//Cancel button
}
break;
case(..n):
{
//All other buttons
}
break;
default:
{
//should never be thrown
}
break;
}
check uialerview delegate UIAlertViewDelegate
Sent to the delegate when the user clicks a button on an alert view.
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
}
//Sent to the delegate after an alert view is dismissed from the screen.
alertView:didDismissWithButtonIndex:
{
}