Кнопки UIAlertView не работают

Я использую представление предупреждений, чтобы предупредить пользователя, когда Интернет не подключен. У меня есть две кнопки в представлении предупреждений, и обе они, похоже, не работают. Я уже реализовал в файле .h. Я использовал NSLog, чтобы проверить, отвечает ли он, когда я нажимаю. Он отвечает в консоли, но ничего не делает при нажатии кнопки. Вот фрагмент моего кода.

- (IBAction)startButton:(id)sender 
   {
     if (![self connectedToNetwork])
     {
       UIAlertView *internetAlert = [[UIAlertView alloc] initWithTitle: @"Network Error!" message: @"You are not connected to the internet" delegate: self cancelButtonTitle: @"OK" otherButtonTitles: @"Open Settings", nil];
       [internetAlert show];
     }
   }

- (void)alertView: (UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
  { 
     if (buttonIndex == 0)
     {
        NSLog(@"Ok clicked");
        HomeViewController *blah = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
       [self.view addSubview: blah.view];
     }

     else if (buttonIndex == 1)
     {
        NSLog(@"Settings clicked");
        [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=WIFI"]];
     }
}

Я использовал [self.contentView addSubview: blah.view], потому что у меня нет контроллеров навигации. Любые мысли о том, что я делаю неправильно


person bumpfox    schedule 28.08.2012    source источник


Ответы (1)


Здесь вы используете неправильный метод для нажатия кнопки UIAlertView. вам нужно использовать другой метод UIAlertView.

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

Пожалуйста, измените следующий код, и он будет работать.

- (IBAction)startButton:(id)sender 
{
    if (![self connectedToNetwork])
    {
        UIAlertView *internetAlert = [[UIAlertView alloc] initWithTitle: @"Network Error!" message: @"You are not connected to the internet" delegate: self cancelButtonTitle: @"OK" otherButtonTitles: @"Open Settings", nil];
        [internetAlert show];
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{ 
    if (buttonIndex == 0)
    {
        NSLog(@"Ok clicked");
        HomeViewController *blah = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
        [self.view addSubview: blah.view];
    }

    else if (buttonIndex == 1)
    {
        NSLog(@"Settings clicked");
        [[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"prefs:root=WIFI"]];
    }
}

Пожалуйста, дайте мне знать, если у вас остались вопросы.

person AppAspect    schedule 28.08.2012
comment
Я тоже это пробовал. Это не работает. Мой NSLog показывает, что нажатие кнопок на самом деле дает мне ответ, но я просто не могу переключиться на другое представление. - person bumpfox; 28.08.2012