Приложение вылетает при нажатии контроллера представления

Эй, когда я нажимаю другой контроллер представления, я получаю это в своем main.m

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

Я использую это, чтобы нажать контроллер представления -

-(void)showMore:(UIButton *)sender
{
    MoreViewController *moreViewController = [[MoreViewController alloc] init];
    [self.navigationController pushViewController:moreViewController animated:YES];
}

Я отправляю сообщение здесь

[moreButton addTarget:self action:@selector(showSettings:)      forControlEvents:UIControlEventTouchUpInside];

Вот моя ошибка -

2013-09-25 18:16:03.186 Путешествие во времени[1591:60b] Окна приложений должны иметь корневой контроллер представления в конце запуска приложения 2013-09-25 18:16:05.179 Путешествие во времени[1591:60b] -[NSConcreteValue showSettings:]: нераспознанный селектор отправлен экземпляру 0x14e5ea70 2013-09-25 18:16:05.181 Путешествие во времени[1591:60b] * Завершение работы приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '-[NSConcreteValue showSettings]: непризнанные селектор направил к экземпляру 0x14e5ea70' * Первый стек бросить вызов: (0x2e1e5e8b 0x384e26c7 0x2e1e97b7 0x2e1e80b7 0x2e136e98 0x309a055f 0x309a04fb 0x309a04cb 0x3098c0f3 0x3099ff13 0x3099fbdd 0x3099ac09 0x3096ff59 0x3096e747 0x2e1b0f27 0x2e1b03ef 0x2e1aebdf 0x2e119541 0x2e119323 0x32e492eb 0x309d01e5 0x4cbd5 0x389dbab7) Libc ++ ABI .dylib: завершение с необработанным исключением типа NSException


person Matt Moss    schedule 26.09.2013    source источник


Ответы (3)


Вылетает на первой строке или на второй? Добавьте точку останова к каждому и нажмите кнопку «Продолжить», чтобы проверить, какая из них.

Если это первое, в вашем alloc/init для MoreViewController может быть какой-то незаконный код.

Если это последнее, возможно, виноваты некоторые методы класса/делегата (viewDidLoad и т.д.).

Что такое сообщение об ошибке во время вашего сбоя? (Иногда нажатие кнопки возобновления воспроизведения в отладчике в Xcode может показать немного больше после сбоя.)

person owenfi    schedule 26.09.2013
comment
Здесь я добавил сообщение выше @owenfi - person Matt Moss; 26.09.2013
comment
Вы отправляете сообщение showSettings: куда-нибудь в MoreViewController? Похоже, он идет к NSValue вместо предполагаемого места назначения. - person owenfi; 26.09.2013
comment
showSettings то же самое, что и showMore (извините, имя изменено) @owenfi - person Matt Moss; 26.09.2013
comment
Конечно, нет проблем, но это отправляется экземпляру NSValue (в частности, NSConcreteValue), когда его, скорее всего, следует передать контроллеру представления, который отображается в данный момент. Можете ли вы добавить строку, которая отправляет это сообщение? - person owenfi; 26.09.2013
comment
сообщение выше @owenfi - person Matt Moss; 26.09.2013
comment
Извините, что продолжаю копаться в кроличьей норе: как создается и хранится ваш экземпляр moreButton? Определение вашего метода также переименовано в showSettings:? В каком классе все это (addTarget и showMore:) содержится? Я предполагаю, что он вылетает только после того, как вы нажмете данную кнопку? - person owenfi; 26.09.2013
comment
Вы инициализировали UINavigationController в AppDelegate? как насчет метода showSettings? это требует каких-либо аргументов? в основном ошибка возникает, когда компилятор не может идентифицировать метод showSettings - person vin; 26.09.2013
comment
Я нашел решение. Что-то не так с определением rootViewController. После того, как я исправил, все снова заработало. Большое спасибо за то, что помогли мне пройти через это. @ownfi - person Matt Moss; 27.09.2013

Я не нашел метод с именем showSettings: в опубликованном вами коде. Вы нажимаете свой viewController в методе с именем showMore: Поэтому я думаю, что код должен быть таким:

[moreButton addTarget:self action:@selector(showMore:)      forControlEvents:UIControlEventTouchUpInside];

Пожалуйста, проверьте это.

person HRM    schedule 26.09.2013

Сообщение об ошибке, в котором говорится, что метод showSettings: не найден.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteValue **showSettings:**]: unrecognized selector sent to instance 0x14e5ea70' 

И я уведомил, что вы используете showMore: в качестве имени вашего метода -(void)showMore:(UIButton *)sender

возможно, просто измените showMore на showSettings или наоборот

person Craig Zheng    schedule 26.09.2013