-[UINavigationController ‹нулевой селектор›]: в экземпляр отправлен нераспознанный селектор

Извините, если это дубликат. Если это так, я благодарен за ссылку и рад удалить свой вопрос. Однако я не нашел ответа среди тонны результатов поиска. Это не обычный случай нераспознанных селекторов. Селектор нулевой. И кидается на эту самую строчку:

вернуть self.topViewController;

Эта строка встроена в:

@implementation UINavigationController (JTRevealSidebarV2)

- (UIViewController *)selectedViewController {
    return self.topViewController;
}

@end

Как видите, это попытка расширить UINavigationController. Вы могли заметить, что мой код основан на этом турориале: https://github.com/mystcolor/JTRevealSidebarDemo (На основе демо версии 2, если кому интересно).

Насколько я заметил, я еще не внес никаких изменений в структуру mystycolor. Особенно не UIViewController+JTRevealSidebarV2.h и не .m. До сих пор я внес изменения только в один из двух представленных контроллеров представления. Те, которые содержат содержимое, а не логику навигации.

Видимо вызывается метод. Следовательно, категория должна была использоваться каким-то правильным образом? И все, что там использует mystycolor, он вызывает хорошо документированный метод и возвращает его значение. Поскольку это из учебника, который является чужим кодом, не спрашивайте меня, почему topViewController не вызывается напрямую. Я попробую это дальше, конечно, но даже если это поможет, я все равно буду куриусом о том, что здесь пошло не так.

Просто из любопытства я изменил это выражение на return [self topViewController];, но неудивительно, что изменений не произошло.

Я рад предоставить больше кода, но не знаю, какой фрагмент может быть вам интересен, чтобы помочь.


person Hermann Klecker    schedule 07.07.2013    source источник


Ответы (1)


Это не ответ на вопрос ПОЧЕМУ, но я понял, что я сделал неправильно.

Один из контроллеров представления, с которыми я работал, не включал

#import "UIViewController+JTRevealSidebarV2.h"
#import "UINavigationItem+JTRevealSidebarV2.h"

Метод selectedViewController реализован для обеих категорий, но при вызове выполняет разные действия. Это ответ на вопрос, почему mystycolor реализовал это именно так.

И теперь, когда я добавил эти включения, все работает нормально.

Но для меня сообщение об ошибке все еще сбивает с толку. Как могло случиться, что метод вообще был вызван, когда причина ошибки, как представляется, в том, что не везде было включено расширение, частью которого является метод?

person Hermann Klecker    schedule 07.07.2013