сбой приложения при вызове popViewController: ошибка: alertView: didDismissWithButtonIndex: - PullRequest
0 голосов
/ 24 июня 2010

Описание проблемы выглядит следующим образом:

У меня есть представление, скажем, представление A. Чтобы ввести определенные данные, у меня есть предупреждение с текстовым полем внутри, которое появляется. Когда пользователь вводит данные в текстовое поле, у меня появляется функция alertView: didDismissWithButtonIndex: следующим образом:

- (void)alertView:(UIAlertView *)alertView:didDismissWithButtonIndex:(NSInteger)buttonIndex {

    [ amountEntered resignFirstResponder];           //dismiss keyboard

    if (buttonIndex == 1) {                          //OK clicked, do something

        if(lblShowTypedText.text)

            data.investmentAmount = lblShowTypedText.text ;

        [myTable reloadData];
    }
}

Тогда у меня в представлении A есть кнопка «Отправить», которая при нажатии возвращает к предыдущему виду. Здесь происходит сбой моего приложения. В консоли нет сообщений, однако после многих запусков я получил одно сообщение, подобное этому:

* - [NSCFType alertView: didDismissWithButtonIndex:]: нераспознанный селектор, отправленный экземпляру 0x3c4dce0 2010-06-24 15: 33: 22.970 BankingAppln [2895: 207] CoreAnimation: игнорирование исключения: * - [NSCFType alertView: didDismissWithButtonIndex:]: нераспознанный селектор, отправленный экземпляру 0x3c4dce0

Таким образом, я сузил проблему до alertView: didDismissWithButtonIndex: function. Если я не вызываю оповещение, а сразу возвращаюсь к предыдущему виду, все в порядке.

Я должен делать что-то не так в моем alertView: didDismissWithButtonIndex: function.

Просьба помочь !!

Ответы [ 4 ]

1 голос
/ 24 июня 2010

Несколько вещей для проверки:

  • Вы устанавливаете делегат AlertView на правильный класс (представление A)?
  • Ваш класс (View A) реализует протокол UIAlertViewDelegate.
  • Вероятно, нет, но вы никогда не знаете: ваше имя класса не совпадает с именем в частном API Apple (не смейтесь, случилось со мной неделю назад, мне понадобилось 2 часа, чтобы выяснить)?

EDIT: Еще одна вещь, чтобы проверить:

  • Ваш метод делегата имеет правильный тип возвращаемого значения (в этом случае я думаю, что это "void")?
0 голосов
/ 14 июля 2012

Я столкнулся с подобной проблемой, и оказалось, что с автоматическим подсчетом ссылок мне нужно было сохранить ссылку на всплывающее окно как свойство, чтобы оно не было собрано.Это было хорошо, но я переусердствовал и начал делать что-то вроде popup = nil; явно, и это поставило меня в тупик, потому что некоторые методы делегата для всплывающего окна были вызваны после того, как я удалил ссылку, которую держал, и теперьэтого всплывающего окна больше не было, и фреймворк потерпел крах из-за этого небольшого факта.

[__NSCFString alertView:didDismissWithButtonIndex:]: unrecognized selector sent to instance 0x9117c0

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

0 голосов
/ 09 сентября 2010

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

если это метод, который вы сами определили с помощью описанной выше реализации, используйте

[self alertView:myAlertView didDismissWithButtonIndex:myIndex];

также, в вашем объявлении у вас есть точка с запятой после параметра alertView, и вам просто нужен пробел.

0 голосов
/ 24 июня 2010

У вас действительно есть этот метод alertView: didDismissWithButtonIndex :, в вашем классе? и отправьте код, когда вы его называете

...