Сбой метода делегата UIAlertView

В моем приложении для iPhone у меня есть NSObjectКласс и UIViewController Б класс. Я хочу вызвать метод экземпляра в классе B из A. Я использовал следующий код.

Bclass *vc = [[Bclass alloc]init];
[vc hideAlert:NSString];
[vc release];

и в классе B:

- (void)hideAlert:(NSString*)message{
    UIAlertView *shareAlrt = [[UIAlertView alloc] initWithTitle:@""
                                                        message:message
                                                       delegate:self
                                              cancelButtonTitle:@"Ok"
                                              otherButtonTitles:nil];
    [shareAlrt show];
    [shareAlrt release];
}

и вызванный метод и показать AlertView. При нажатии на кнопку Ok, я хочу перейти к классу Cclass.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        Cclass *vc = [[Cclass alloc]initWithNibName:@"Cclass" bundle:[NSBundle mainBundle]];
        [self presentModalViewController:vc animated:NO];
        [vc release];
    }
}

Но когда я нажимаю кнопку ОК, приложение вылетает. Что тут происходит? я добавил <UIAlertViewDelegate> в файле B class.h, но все та же ошибка. Пожалуйста помоги

Я получаю код ошибки *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType alertView:clickedButtonAtIndex:]: unrecognized selector sent to instance 0x81baa80'

2 ответа

Решение

Просто поменяй метод

- (void)hideAlert:(NSString*)message{
    UIAlertView *shareAlrt = [[UIAlertView alloc] initWithTitle:@""
                                                    message:message
                                                   delegate:self
                                          cancelButtonTitle:nil
                                          otherButtonTitles:@"Ok",nil];
    [shareAlrt show];
    [shareAlrt release];
}

На это ответили, предположив, что у вас нет другой кнопки, кроме кнопки отмены под названием "ОК". Предположение сделано, увидев ваш отображаемый код.

Вы использовали кнопку "Отмена", с которой вы не можете обработать делегата, чтобы выполнить какое-либо действие.

Если вы посмотрите на документацию ссылки на класс UIAlertViewDelegate

При желании вы можете реализовать alertViewCancel: метод для принятия соответствующих действий, когда система отменяет ваш просмотр предупреждений. Если делегат не реализует этот метод, поведение по умолчанию состоит в том, чтобы симулировать пользователя, нажимающего кнопку отмены и закрывающего представление.

Другие вопросы по тегам