我正在使用此属性在导航栏上添加搜索栏,对于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;
}
答案 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的一部分,而且似乎不可配置:(
希望这对你有帮助吗?