我UINavigationItem
在右侧添加了一个保存按钮,在左侧添加了一个后退按钮到我的UINavigationBar
. 我将我的视图控制器设置为委托,并且导航栏正在调用一些委托函数,但不是-(BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
。
在 ISStudioReviewViewController.h 中:
@interface ISStudioReviewViewController : UIViewController <UINavigationBarDelegate, UITextViewDelegate>
@property (weak, nonatomic) IBOutlet UINavigationBar *header;
@end
在 ISStudioReviewViewController.m 中:
-(void)viewDidLoad {
[super viewDidLoad];
...
...
UINavigationItem *navHeader = [[UINavigationItem alloc] initWithTitle:@"Compose Review"];
[navHeader setHidesBackButton:NO];
UIBarButtonItem *actionButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self
action:@selector(saveReview)];
[navHeader setRightBarButtonItem:actionButton];
[header setDelegate:self];
[header pushNavigationItem:navHeader animated:NO];
}
-(BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
{
NSLog(@"Popping item");
....
return YES;
}
-(BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item
{
NSLog(@"Should push item");
return YES;
}
-(void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item
{
NSLog(@"Pushing item!");
}
在我的日志中,我可以看到 shouldPush 和 didPush 委托方法被正确调用,并且我的后退按钮正在显示。但是,单击后退按钮不会调用委托方法,并且Popping item
永远不会被记录。
我应该注意到,保存按钮actionButton
确实正确地调用了它的目标,没有问题。我试过不添加这个按钮,看看这是否会导致后退按钮失败,但没有运气。
我正在使用 ARC 并针对 iOS 6.0。