从导航栏中删除搜索栏

时间:2014-08-08 07:09:03

标签: objective-c ios7 uisearchbar uisearchbardisplaycontrol

我正在使用此属性在导航栏上添加搜索栏,对于iOS 7,searchVC.displaysSearchBarInNavigationBar = YES; 它将它完美地添加到导航栏上并且运行良好。

但是现在我想在self.view上添加新的子视图,当子视图添加到导航栏时,我想修改导航栏,即我想从导航栏中删除搜索栏并想在导航上添加一些标题酒吧。但我无法删除搜索栏。 我尝试了不同的方法,但都失败了。

因此。如果有人对此问题有任何解决方案,请帮助我。

我已经尝试过以下技巧从导航栏中删除搜索栏,但没有得到任何解决方案:

1)将displaySearchBarInNavigationBar设置为NO searchVC.displaysSearchBarInNavigationBar = NO;

2)设置导航标题不起作用。

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

3)将自定义标签视图添加到navigationItem的titleView:

 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;

我使用下面的代码将搜索栏添加到导航栏:

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

}

1 个答案:

答案 0 :(得分:0)

来自apple docs for property“displaysSearchBarInNavigationBar”UISearchDisplayController

  

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

这意味着您更改的navigationItem将不会使用,因此您的更改不会产生任何影响。

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

searchVC.searchbar.hidden = YES;

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

searchVC.navigationItem.title = @"title";

来自apple docs for property“navigationItem”UISearchDisplayController

  

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

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

希望这对你有帮助吗?