Метод делегата «clickedButtonAtIndex:» не вызывается.
-
22-09-2019 - |
Вопрос
Я создал представление оповещений с двумя кнопками, используя следующий код:
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle: title
message: msg delegate:nil cancelButtonTitle:@"Replay" otherButtonTitles:@"Highscore", nil];
[alertView show];
Я хочу запустить некоторый код при нажатии одной из кнопок.Для этого я добавил в файл Delegate.m следующий метод:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex==0) //Run some code
else //Other code
}
Но этот метод не вызывается, когда я нажимаю любую из кнопок!Может кто-нибудь сказать мне, почему?
Заранее спасибо,
Сагифтв
Решение
delegate:nil
Как оповещение будет связывать делегат, если вы указали, что делегатов не будет? Заменить эту часть на
delegate:self
вместо.
Другие советы
Попробуйте установить для делегата значение self вместо nil.
Я звонил UialertView DimissWithClickedButtonIndex: анимация: Метод из метода делегата Uitextfield, потому что я также хотел обработать клавишу возврата клавиатуры:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (textField.tag == 1001) {
[textField resignFirstResponder];
[_alert dismissWithClickedButtonIndex:1 animated:YES];
}
return YES;
}
Этот способ метода AlertView: ClickedButtonAtindex: Никогда не вызывается, даже если вы настроили правильный делегат. Вместо AlertView: DiddismissWithButtonIndex: действительно вызывается. Так что реализуйте этот метод вместо этого:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
// your code here
}
Если вы просто хотите обрабатывать только кнопки View Alert, этот первый вызов Clickedbuttonatindex, а затем Diddismisswithbuttonindex.
В .h Pult uiActionSheetDelegate и в .M, создавая AlertView, поместите делегата в себя, а не ноль, как это сделано в вышеупомянутом случае
Правильный ответ на этот вопрос delegate:nil
. Анкет Но в случае, если делегат уже настроен на себя, и clickedButtonAtIndex
все еще не работает, попробуйте проверить, если вы выносите другой контроллер представления ([self.navigationController popViewControllerAnimated:YES];
) После показа AlertView. Это также может привести к clickedButtonAtIndex
не называется. Вот что случилось со мной.
Надеюсь, это кому -то поможет.