ABPeoplePickerNavigationController隐藏取消按钮

jki*_*gel 9 iphone objective-c ios

我是子类ABPeoplePickerNavigationController,我想知道如何隐藏正确的工具栏项目" Cancel"?

我一直在寻找,但我找不到合适的解决方案.

谢谢!

War*_*shi 14

使用 <UINavigationControllerDelegate>

之后ABPeoplePickerNavigationController alloc它代表自我.

peoplePicker.delegate = self;
Run Code Online (Sandbox Code Playgroud)

我们需要覆盖一个UINavigationController委托方法.

//当导航控制器通过视图控制器堆栈的推,弹出或设置显示新的顶视图控制器时调用.

- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]])
        navigationController.topViewController.navigationItem.rightBarButtonItem = nil;
}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说工作正常,谢谢,但使用搜索栏后取消按钮重新出现.为了解决这个问题,我实现了`UISearchDisplayDelegate`并在`navigationController:willShowViewController:animated:`方法中设置了`viewController.searchDisplayController.delegate = self;` (2认同)