Ответ предполагает, что под «представлением» вы ссылаетесь на 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]];