2012-06-25 41 views
4

有没有解决方法没有收到NavBarDelegate回调?我试图在一个测试项目,只是做:没有收到UINavigationBarDelegate回调

[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符合本协议的接口。

在viewWillAppear中:,检查我的类符合协议与:

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

而且我得到了的NSLog消息说我的课符合,但我不明白的回调。由于它在测试项目中运行,并且在此不起作用,所以我正在尝试找出其他解决此问题的方法。有什么想法吗?谢谢。

+0

你是否推动或弹出任何物品? –

+0

你提到的'这里'在哪里? – Alexander

+0

@Paul de Lange是的,我喜欢在我的测试项目中按下并弹出。我的测试项目获得回调,但我的真实项目没有。 – Crystal

回答

4

我离开这为未来的人谁都会遇到这样的问题:

你需要这些<UINavigationBarDelegate> protocol methods把你的导航控制器类里面,不是一个视图控制器的类中,你正在努力。

在我的情况下,我只是有一个类NavigationController(UINavigationController的子类),其中的单例实例:sharedNavigationController适用于我的整个应用程序。我已将其设置为符合<UINavigationBarDelegate> protocol并在其中声明了这些方法。从那以后,一切运行良好。