我加入了保存按鈕,右側和背部按鈕左側一個UINavigationItem
我UINavigationBar
。我將我的視圖控制器設置爲委託,並且導航欄正在調用一些委託功能,但不是-(BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
。UINavigationBar的只有調用一些代表
在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。
我複製你的代碼到一個新的應用程序,它爲我工作得很好 - 我的確得到了「啪項目」記錄,當我點擊後退按鈕。 – rdelmar