簡體   English   中英

iOS:使用搜索控制器后,重新出現已刪除的取消按鈕

[英]iOS: Removed cancel button reappears after using search controller

我在我的應用程序中使用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;

}

這很好。 但是,當我使用搜索控制器退出其中時,右上角的按鈕突然變為“取消”按鈕(請參見下圖)。 我怎樣才能解決這個問題? 提前致謝。

在此處輸入圖片說明

好的,只是想出了解決方法。 我剛剛添加了一條通知,以查看何時隱藏鍵盤,並將按鈕添加回導航欄。

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;
}

要解決此問題,您必須實現<UISearchDisplayDelegate>並在navigationController:willShowViewController:animated:方法中,將searchDisplayController的委托設置為self viewController.searchDisplayController.delegate = self;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM