我正在为 UISearchDisplayController
苦苦挣扎,希望有人可以帮助我。
所以基本上我有一个 UINavigationBar
,其中有一个“搜索”按钮。当有人点击“搜索”时,UISearchDisplayController
应该被激活并且 UISearchBar 应该出现在 UINavigationBar
中。在 SearchBar 旁边,我实现了一个“取消”按钮,它可以停用 SearchDisplayController
并将 UINavigationBar
重置为使用“搜索”按钮的标准。
我的第一个问题是 SearchBar
与结果表或灰色覆盖之间的差距,而 SearchDisplayController
处于事件状态。
第二个问题是我无法在点击取消后将我的 rightBarButtonItem 重置为默认图标(放大镜)。即使我尝试设置 [self.navigationItem setRightBarButtonItem:nil];
也没有发生任何事情,它只是保留在“取消”按钮上。
这是我的实现UI 元素是通过我的 Storyboard添加的)
- (IBAction)btnSearchClickedid)sender {
[self.navigationController.navigationBar addSubview:self.searchController.searchBar];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self actionselector(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];
}
好的,我想出了解决这两个问题的方法。
由于 [self.searchController setDisplaysSearchBarInNavigationBar:YES];
期望 NavigationBar 是半透明的,所以出现了差距,所以我通过在 btnSearchClicked 上启用半透明来解决问题
code> 并在取消时将其停用。
通过在访问 setRightBarButtonItem
属性之前停用 cancelEditing
中的 setDisplaysSearchBarInNavigationBar
解决了该按钮的问题。也许 setDisplaysSearchBarInNavigationBar
-Option 会创建一个不响应 self.navigationItem 的新 NavigationBar。
关于ios - UISearchDisplayController 和 setDisplaysSearchBarInNavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21234739/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |