有没有办法解决不接收NavBarDelegate回调的问题?我在测试项目中尝试过:
[self.navigationController.navigationBar setDelegate:self];
Run Code Online (Sandbox Code Playgroud)
在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__);
}
Run Code Online (Sandbox Code Playgroud)
我确实检查了我的ViewController在接口中是否符合此协议.
在viewWillAppear:中,我检查我的类是否符合协议:
if ([self conformsToProtocol:@protocol(UINavigationBarDelegate)]) {
NSLog(@"yes I conform");
}
Run Code Online (Sandbox Code Playgroud)
我确实得到了NSLog消息,说我的班级符合,但我没有得到回调.因为它在测试项目中工作,并且它在这里不起作用,我试图找出解决这个问题的其他方法.有什么想法吗?谢谢.
我将离开这个将来遇到这个问题的人:
您需要将它们<UINavigationBarDelegate> protocol methods放在导航控制器的类中,而不是放在您正在处理的视图控制器类中.
在我的例子中,我只有一个类NavigationController(UINavigationController的子类),其单例实例:sharedNavigationController适用于我的整个应用程序.我已将其设置为符合<UINavigationBarDelegate> protocol并在其中声明了这些方法.从那以后一切正常.
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |