从UIAlertView警报弹出视图

时间:2011-05-03 01:16:27

标签: iphone uinavigationcontroller uialertview popviewcontroller

我的应用程序中有5-6个视图控制器,我正在使用导航控制器。现在我要做的是:从进入一个视图控制器到另一个视图控制器,UIAlertView框出现并单击“否”,它应该弹出视图控制器并转到上一个。我试过PopToViewController:动画和PopViewController:动画,但它们都没有工作。任何人都能告诉我这是否可能?如果是,怎么样?

我可以在警告框中按“否”时在控制台上打印任何内容,但视图不会弹出。有什么建议吗?

由于 维克

1 个答案:

答案 0 :(得分:0)

答案假定通过“view”你指的是一个UIViewController(因为你只能推/弹控制器)并且你正在通过导航控制器上的pushViewController:animated:选择器调用这个控制器。

鉴于此,您必须在控制器.h文件中实现UIAlertViewDelegate

@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];

在上面的例子中,“OK”按钮是索引0和“No”按钮,索引1.所以当你实现alertview:clickedButtonAtIndex:委托方法时,你可以检查用户是否点击了右键然后执行控制器弹出操作。

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

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

}

编辑:

确保您实例化UINavigationController,否则,您的控制器navigationController属性将为零

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]];