【问题标题】:Remove Search Bar from Navigation Bar从导航栏中删除搜索栏
【发布时间】:2014-08-08 07:09:03
【问题描述】:

我在导航栏上添加搜索栏,在 iOS 7 中,使用searchVC.displaysSearchBarInNavigationBar = YES;, 它按预期将其添加到导航栏上并且工作正常。

现在,我想在导航栏上添加一个子视图。添加子视图时,我想修改导航栏,即从导航栏中删除搜索栏并在导航栏上添加一些标题。但是,无法删除搜索栏。

尝试了很多从导航栏中删除搜索栏,但徒劳无功。

到目前为止我遵循的方法是:

  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 = @"绘制区域"; 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;
    
}

【问题讨论】:

  • searchVC.displaysSearchBarInNavigationBar =NO;对于特定的视图控制器试试这个
  • @Rushabh:你没有仔细阅读问题。我已经提到我尝试过“searchVC.displaysSearchBarInNavigationBar =NO”...

标签: objective-c ios7 uisearchbar uisearchbardisplaycontrol


【解决方案1】:

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

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

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

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

searchVC.searchbar.hidden = YES;

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

searchVC.navigationItem.title = @"title";

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

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

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

希望这对你有帮助吗?

【讨论】:

  • 我试过了,但还是不行。现在我所做的是我隐藏了整个导航栏,并使用包含标题标签的自定义视图制作了包含左右栏按钮和中心栏按钮的自定义工具栏视图。和自定义工具栏看起来像带有标题的导航栏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多