Iphone 未接收UINavigationBarDelegate回调

Iphone 未接收UINavigationBarDelegate回调,iphone,protocols,Iphone,Protocols,是否有办法排除未接收NavBarDelegate回调的故障?我在一个测试项目中试着做: [self.navigationController.navigationBar setDelegate:self]; 在viewDidLoad中,我确实收到了以下内容的回调: - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item { NSLog(@"%s", __

是否有办法排除未接收NavBarDelegate回调的故障?我在一个测试项目中试着做:

[self.navigationController.navigationBar setDelegate:self];
在viewDidLoad中,我确实收到了以下内容的回调:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item {
    NSLog(@"%s", __FUNCTION__);
    return YES;
}
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item {
    NSLog(@"%s", __FUNCTION__);    
}

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item {
    NSLog(@"%s", __FUNCTION__);
    return YES;
}
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item {
    NSLog(@"%s", __FUNCTION__);
}
我确实在界面中检查了我的ViewController是否符合此协议

在ViewWillDisplay:,我检查我的类是否符合以下协议:

if ([self conformsToProtocol:@protocol(UINavigationBarDelegate)]) {
        NSLog(@"yes I conform");
    }

我确实收到了NSLog消息,说我的类符合,但我没有收到回调。由于它在一个测试项目中工作,但在这里不起作用,所以我正在尝试找出解决这个问题的其他方法。有什么想法吗?谢谢。

我将此信息留给将来遇到此问题的任何人:

您需要将这些
协议方法
放在导航控制器的类中,而不是放在您正在使用的视图控制器的类中


在我的例子中,我只有一个类NavigationController(UINavigationController的子类),它的单例实例:
sharedNavigationController
适用于我的整个应用程序。我已将其设置为符合
协议
,并在其中声明了这些方法。从那以后一切都很好。

你推送或弹出任何项目吗?你提到的“这里”在哪里?@Paul de Lange是的,我在测试项目中推送和弹出一样。我的测试项目得到回调,但我真正的项目没有。