OStack程序员社区-中国程序员成长平台

标题: ios - UISearchDisplayController 和 setDisplaysSearchBarInNavigationBar [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 18:06
标题: ios - UISearchDisplayController 和 setDisplaysSearchBarInNavigationBar

我正在为 UISearchDisplayController 苦苦挣扎,希望有人可以帮助我。

所以基本上我有一个 UINavigationBar ,其中有一个“搜索”按钮。当有人点击“搜索”时,UISearchDisplayController 应该被激活并且 UISearchBar 应该出现在 UINavigationBar 中。在 SearchBar 旁边,我实现了一个“取消”按钮,它可以停用 SearchDisplayController 并将 UINavigationBar 重置为使用“搜索”按钮的标准。

Default UINavigationBar

我的第一个问题是 SearchBar 与结果表或灰色覆盖之间的差距,而 SearchDisplayController 处于事件状态。

SearchBar activated

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

after clicking Cancel

这是我的实现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];
}



Best Answer-推荐答案


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

由于 [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