我在我的应用程序中使用 ABPeoplePickerNavigationController,并使用 UINavigationControllerDelegate 将导航栏按钮覆盖为我自己的。
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
navigationController.topViewController.searchDisplayController.searchBar.barStyle = UIBarStyleBlack;
navigationController.topViewController.navigationItem.leftBarButtonItem = nil;
navigationController.topViewController.navigationItem.rightBarButtonItem = nil;
UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self
action:@selector(cancel:)];
navigationController.topViewController.navigationItem.leftBarButtonItem = cancelButtonItem;
UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(addItem:)];
navigationController.topViewController.navigationItem.rightBarButtonItem = addButtonItem;
}
这很好用。但是,当我使用搜索 Controller 并退出时,我的右上角按钮突然变为“取消”按钮(见下图)。我怎样才能解决这个问题?提前致谢。
最佳答案
好的,刚刚知道如何解决这个问题。我刚刚添加了一个通知,以查看键盘何时隐藏,并将按钮添加回导航栏。
1)声明并综合属性mainNavigationController:
@property UINavigationController *mainNavigationController;
2)在(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController动画:(BOOL)动画中,添加:
mainNavigationController = navigationController;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onNotification:) name:UIKeyboardWillHideNotification object:nil];
3)添加方法onNotification:
-(void)onNotification:(NSNotification*)notification
{
UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(addItem:)];
mainNavigationController.topViewController.navigationItem.rightBarButtonItem = addButtonItem;
}
关于iOS:删除的取消按钮在使用搜索 Controller 后重新出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533781/