首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISearchDisplayController和setDisplaysSearchBarInNavigationBar

UISearchDisplayController和setDisplaysSearchBarInNavigationBar
EN

Stack Overflow用户
提问于 2014-01-20 12:55:43
回答 1查看 887关注 0票数 2

我在和UISearchDisplayController做斗争,希望有人能帮我解决问题。

基本上,我有一个UINavigationBar,里面有一个“搜索”-Button。当有人点击“搜索”时,UISearchDisplayController应该激活,UISearchBar应该出现在UINavigationBar中。在SearchBar旁边,我实现了一个“取消”-Button,它使SearchDisplayController失效,并用"Search"-Button将UINavigationBar重置回它的标准。

我的第一个问题是我的SearchBar和结果表或灰色覆盖之间的差距,而SearchDisplayController是活动的。

第二个问题是,在点击“取消”之后,我无法将rightBarButtonItem重置为默认图标(放大镜)。即使我试图设置[self.navigationItem setRightBarButtonItem:nil];,它也不会发生,它只保留在“取消”按钮中。

下面是我的实现:( UI元素是通过我的故事板添加的)

代码语言:javascript
复制
- (IBAction)btnSearchClicked:(id)sender {
[self.navigationController.navigationBar addSubview:self.searchController.searchBar];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEditing)];

[self.searchController.searchBar setFrame:CGRectMake(0, 0, 250, 44)];
[self.searchController setDisplaysSearchBarInNavigationBar:YES];
[self.searchController setActive:YES animated:YES];
[self.searchController.searchBar becomeFirstResponder];
}

-(void)cancelEditing
{
[self.navigationItem setRightBarButtonItem:nil];
[self.searchController setActive:NO animated:YES];
[self.searchController.searchBar removeFromSuperview];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-20 15:07:29

好的,我想出了两个问题的解决方案。

这一差距之所以出现,是因为[self.searchController setDisplaysSearchBarInNavigationBar:YES];预期NavigationBar是半透明的,所以我只是在btnSearchClicked上启用半透明,并在cancel上使其失效。

在访问setDisplaysSearchBarInNavigationBar属性之前,通过在cancelEditing中禁用setRightBarButtonItem来解决按钮的问题。也许setDisplaysSearchBarInNavigationBar-Option创建了一个不响应self.navigationItem的新NavigationBar。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21234739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档