1

I am adding search bar on navigation bar, in iOS 7, using searchVC.displaysSearchBarInNavigationBar = YES;, which adds it on navigation bar as expected and works fine.

Now, I want to add a subview on navigation bar. When subview is added, I want to modify navigation bar, i.e. remove search bar from navigation bar and add some title on navigation bar. But, not able to remove Search Bar.

Tried a lot to remove search bar from navigation bar, but in vain.

The approaches I have followed so far are:

  1. setting displaysSearchBarInNavigationBar propery to NO searchVC.displaysSearchBarInNavigationBar = NO;

  2. setting navigation title is not working too.

    self.navigationItem.title = @"Some Title";

  3. adding custom label view to titleView of navigationItem:

    UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 169, 44)]; lbl.backgroundColor = [UIColor clearColor]; lbl.textColor = [UIColor whiteColor]; lbl.textAlignment = NSTextAlignmentCenter; lbl.font = FontText_20; lbl.text = @"Draw Area"; self.navigationItem.titleView = lbl;

I used below code for adding search bar to navigation bar:

- (void)setupSearchBar {

        // setup search bar
        searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 160, 44.0)];
        searchBar.placeholder = @"Address / City / Zip";
        searchBar.delegate = self;
        searchBar.showsCancelButton = YES;
        
        // setup search bar viewcontroller
        searchVC = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
        searchVC.delegate = self;
        searchVC.searchResultsDataSource = self;
        searchVC.searchResultsDelegate = self;
        searchVC.displaysSearchBarInNavigationBar = YES;
    
}
4

1 回答 1

0

来自苹果文档的属性“displaysSearchBarInNavigationBar” UISearchDisplayController

讨论 当您返回 YES 以在导航栏中显示搜索栏时,系统使用搜索显示控制器的 navigationItem 属性并忽略 searchContentsController 视图控制器的导航项(如果已设置)。显示的搜索字段在导航栏中占据尽可能多的宽度。

这意味着您更改的 navigationItem 不会使用,因此您的更改没有任何效果。

您是否尝试隐藏完整的搜索栏?您可以作为 UISearchDisplayController 实例的属性到达那里。

searchVC.searchbar.hidden = YES;

我还没有测试过,但也许你可以在隐藏搜索栏后从你的 UISearchDisplayController 实例中看到 navigationItem 的标题?

searchVC.navigationItem.title = @"title";

来自属性“navigationItem” UISearchDisplayController的苹果文档

讨论 您可以按照 UINavigationItem 类参考中的描述配置导航项,但配置标题视图除外。

也许搜索栏是titleView的一部分,这似乎是不可配置的:(

希望这对你有帮助吗?

于 2014-08-08T20:41:54.557 回答