Сбой метода делегата 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: метод для принятия соответствующих действий, когда система отменяет ваш просмотр предупреждений. Если делегат не реализует этот метод, поведение по умолчанию состоит в том, чтобы симулировать пользователя, нажимающего кнопку отмены и закрывающего представление.