UIAlertview нажал кнопку в методе делегата индекса, который не вызывается

Я новичок в AlertViews с действиями. Я установил мой, как в примерах, которые я нашел здесь, включая установку метода делегата в моем.h, но когда я отлаживаю, обнаружил, что он не достигает моего метода clickedButtonAtIndex. Вероятно, упущено что-то простое:-/ Любая помощь в решении этого будет принята, спасибо Вот мой код:

.h файл

@interface LineDetailViewController : UIViewController <UIAlertViewDelegate>

, м файл:

- (IBAction)removeLineButton:(UIButton *)sender {

    NSString * requestSubmitText = [NSString stringWithFormat:@"Hey Bro are you sure you want to remove this line you created, it will also remove all the reviews attached and can not be undone?"];

    UIAlertView *removeLineRequest = [[UIAlertView alloc] initWithTitle:@"WARNING!!"
                                                          message:requestSubmitText
                                                         delegate:nil
                                                cancelButtonTitle:@"Remove It"
                                                otherButtonTitles:@"Cancel",nil];
    [removeLineRequest show];

- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex{
    //if (buttonIndex == [alertView cancelButtonIndex]){
    if (buttonIndex == 0){
        NSLog(@"Cancel button pressed");
    }else{
        NSLog(@"other button pressed");
    }
}

4 ответа

Решение

Вы должны установить делегата self

UIAlertView *removeLineRequest = [[UIAlertView alloc] initWithTitle:@"WARNING!!"
                                                          message:requestSubmitText
                                                         delegate:self // <- here
                                                cancelButtonTitle:@"Remove It"
                                                otherButtonTitles:@"Cancel",nil];

Вызов removeLineRequest.delegate = self,

При создании вашего оповещения установите ваш делегат на себя. И вы уже реализовали UIAlertViewDelegate.

Чтобы решить вашу проблему, просто установите delegate в self вместо nil, Некоторая дополнительная информация,

UIAlertView а также UIAlertViewDelegate были объявлены устаревшими. Согласно документации,

UIAlertView устарела. использование UIAlertController с preferredStyle из UIAlertControllerStyleAlert вместо.

Соответствующий учебник здесь

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