如果按下UIALertView按钮,我想打开一个UIViewController。
我有代码。但是,uiviewcontroller没有被打开:(
我确信uialertview工作正常。并且uiviewcontroller的代码也很好。 (从其他地方调用时它可以工作)。
任何帮助?
感谢。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0) //Yes, Sign Me Up!
{
NSLog(@"0");
ViewerWebController *web = [[ViewerWebController alloc] initWithURL:[NSURL URLWithString:@"http://www.funimation.com/"]];
[web setShowToolbar:YES];
[self.navigationController pushViewController:web animated:YES];
[web release];
}
else if (buttonIndex == 1) //Remove from List
{
NSLog(@"1");
[[NSUserDefaults standardUserDefaults] setBool:false forKey:@"subscribeButtonOption"];
[_tableView reloadData];
}
else if (buttonIndex == 2) //"Maybe Later"
{
NSLog(@"2");
}
}
答案 0 :(得分:1)
这可能有用......
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// the user clicked one of the OK/Cancel buttons
if (buttonIndex == 0)
{
YourRootNavigationController *navController = [YourRootNavigationController sharedInstance]; // singleton
[navController pushViewController:YOUR_CONTROLLER animated:YES];
}
else
{
NSLog(@"cancel");
}
}
答案 1 :(得分:1)
警报视图没有导航控制器。您需要保留对要将视图控制器推送到的导航控制器的引用。
答案 2 :(得分:0)
使用didDismissWithButtonIndex
而不是clickedButtonAtIndex
。
在 UIAlertView已从屏幕层次结构中删除后调用前者,而后者在 UIAlertView仍在屏幕上时发生。在屏幕上,UIAlertView改变了应用程序的性质;这意味着在尝试将视图推送到导航控制器时会发生不好的事情。
这种对clickedButtonAtIndex
的误用似乎是互联网和StackOverflow上常见的错误信息。花费我几个小时的挫折感。