открыть контроллер uiview из кнопки uialertview - PullRequest
0 голосов
/ 10 февраля 2012

Я хочу открыть UIViewController, если нажата кнопка UIALertView.

У меня есть код для этого.Тем не менее, 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 ]

1 голос
/ 10 февраля 2012

Вид предупреждения не имеет контроллера навигации. Вам нужно будет сохранить ссылку на контроллер навигации, на который вы хотите установить контроллер представления.

1 голос
/ 10 февраля 2012

Это может сработать ..

- (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");
  }
}
0 голосов
/ 06 мая 2014

Используйте didDismissWithButtonIndex, а не clickedButtonAtIndex.

Первый вызывается после , UIAlertView был удален из иерархии экрана, в то время как последний происходит, пока UIAlertView все еще находится на экране . На экране UIAlertView меняет характер приложения; это означает, что при попытке передачи представлений на контроллер Nav происходят плохие вещи.

Такое неправильное использование clickedButtonAtIndex, похоже, является распространенной дезинформацией, распространяющейся по Интернету и StackOverflow. Стоило мне часов разочарования.

...