Просмотр всплывающих окон из оповещения UIAlertView - PullRequest
1 голос
/ 03 мая 2011

В моем приложении 5-6 контроллеров представления, и я использую контроллер навигации для этого.Теперь я пытаюсь сделать следующее: от ввода одного контроллера представления к другому появляется окно UIAlertView и после нажатия кнопки «Нет» оно должно вывести контроллер представления и перейти к предыдущему.Я пробовал PopToViewController: animated и PopViewController: Animated, но ни один из них не работает.Кто-нибудь может сказать мне, если это возможно?и если да, то как?

Я могу напечатать что-нибудь на консоли, когда нажимаю «Нет» в окне предупреждения, но представление не появляется.Любые предложения?

Спасибо Вик

1 Ответ

0 голосов
/ 03 мая 2011

Ответ предполагает, что под «представлением» вы ссылаетесь на UIViewController (так как вы можете использовать только контроллеры push / pop) И что вы вызываете этот контроллер с помощью селектора pushViewController:animated: на контроллере навигации.

Учитывая это, вы должны реализовать UIAlertViewDelegate в вашем файле контроллера .h

@interface MyController : UIViewController <UIAlertViewDelegate> {

}

@end

Затем убедитесь, что вы правильно проверяли индексы кнопок при создании UIAlertView

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"No", nil];

[alert show];
[alert release];

В приведенном выше примере кнопка «ОК» будет иметь индекс 0, а кнопка «Нет» - индекс 1. Поэтому при реализации метода делегата alertview:clickedButtonAtIndex: вы можете проверить, нажал ли пользователь правую кнопку.и затем выполните всплывающее действие контроллера.

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    if (buttonIndex == 1) { //button NO licked
        [self.navigationController popViewControllerAnimated:YES];
    }

}

РЕДАКТИРОВАТЬ:

Убедитесь, что вы создали экземпляр UINavigationController, в противном случае ваше свойство контроллера navigationController будет nil

tabBarController = [[UITabBarController alloc] init];
tabBarController.view.frame = CGRectMake(0, 0, 320, 460);
NSMutableArray *controllers = [[NSMutableArray alloc] initWithCapacity:1];
ownerController *oController = [[ownerController alloc] init];

//navigation controller creation
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: oController];
[oController release]; 
//adds navigation controller to collection of controllers
[controllers addObject:nav]; 

[tabBarController setViewControllers:controllers]; 
[controllers release];   
[self.view addSubview:[tabBarController view]];
...