iOS:从导航栏中删除以编程方式添加的搜索栏

Posted

技术标签:

【中文标题】iOS:从导航栏中删除以编程方式添加的搜索栏【英文标题】:iOS: REMOVING programmatically added search bar from navigation bar 【发布时间】:2014-09-12 19:56:35 【问题描述】:

场景

在我的应用程序中,右上角有一个带有“放大镜”图标的导航栏。当用户点击此图标时,导航栏的 titleView 将被 UISearchBar 替换。

我用这段代码添加了搜索栏...

    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 320.0, 44.0)];
    searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 310.0, 44.0)];
    searchBarView.autoresizingMask = 0;
    searchBar.delegate = self;
    [searchBarView addSubview:searchBar];
    self.navigationItem.titleView = searchBarView;

所有这些都可以完美运行。现在,当用户结束对 UISearchBar 的编辑时,我需要让 UISearchBar 消失,并再次替换为 titleView 的“标题”。

问题

如何删除 UISearchBar 并在编辑后显示导航控制器的标题?

【问题讨论】:

【参考方案1】:

试试这个,

searchBar.hidden = Yes;

【讨论】:

"...并在编辑后显示导航控制器的标题?"【参考方案2】:

我没有测试过,但这应该可以工作:

[self.navigationItem.titleView removeFromSuperview];
self.title = @"Nav bar title";

【讨论】:

以上是关于iOS:从导航栏中删除以编程方式添加的搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 导航栏中的搜索栏

iOS:在导航栏中显示搜索栏时隐藏范围栏

iOS v10 或更低版本:如何以编程方式在导航栏底部添加 UISearchController

以编程方式将按钮添加到导航栏

无法以编程方式在我的导航栏中获取 UISearchController

导航栏中的 iOS 搜索栏