从uialertview按钮打开uiviewcontroller

时间:2012-02-10 17:49:07

标签: objective-c ios uiviewcontroller uiwebview uialertview

如果按下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");
}
}

3 个答案:

答案 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上常见的错误信息。花费我几个小时的挫折感。