- [UINavigationController <null selector =“”>]:发送到实例</null>的无法识别的选择器

时间:2013-07-07 16:49:28

标签: objective-c uinavigationcontroller objective-c-category unrecognized-selector

如果这是重复的道歉。如果是这样,我感谢一个链接,并乐意删除我的问题。但是,我没有找到大量搜索结果之间的答案。这不是无法识别的选择器的常见情况。选择器是零。它被抛到这一行:

返回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];,但毫不奇怪,没有做出改变。

我很乐意提供更多代码,但不知道哪些代码可能对您有用。

1 个答案:

答案 0 :(得分:0)

这不是问题为什么的答案,但我发现了我做错了什么。

我正在使用的视图控制器之一不包括

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

selectedViewController方法是针对两个类别实现的,但在调用时会执行不同的操作。这就是为什么mystycolor以这种方式实现它的问题的答案。

现在我添加了这些包括它工作正常。

但对我来说,错误信息仍然令人困惑。怎么可能是这个方法被调用了,当错误的原因似乎是该方法所属的扩展名并未包含在所有地方?