0

抱歉,如果这是重复的。如果是这样,我很感谢一个链接,并很高兴删除我的问题。但是,我没有在大量搜索结果之间找到答案。这不是无法识别的选择器的常见情况。选择器为零。它被抛出在这条线上:

返回 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];,但没有做出更改也就不足为奇了。

我很高兴提供更多代码,但不知道哪个片段可能对您有帮助。

4

1 回答 1

0

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

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

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

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

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

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

于 2013-07-07T17:13:39.283 回答