Вопрос

Я создал представление оповещений с двумя кнопками, используя следующий код:

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 не называется. Вот что случилось со мной.

Надеюсь, это кому -то поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top