gpt4 book ai didi

ios - UISearchDisplayController 和 setDisplaysSearchBarInNavigationBar

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:18 25 4
gpt4 key购买 nike

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

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

Default UINavigationBar

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

SearchBar activated

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

after clicking Cancel

这是我的实现:(UI 元素是通过我的 Storyboard添加的)

- (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];
}

最佳答案

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

差距是由于 [self.searchController setDisplaysSearchBarInNavigationBar:YES]; 而产生的它期望 NavigationBar 是半透明的,所以我通过在 btnSearchClicked 上启用半透明来解决这个问题并在取消时停用它。

按钮的问题已通过停用 setDisplaysSearchBarInNavigationBar 得到解决在 cancelEditing在访问 setRightBarButtonItem 之前属性(property)。也许是 setDisplaysSearchBarInNavigationBar -Option 创建一个不响应 self.navigationItem 的新 NavigationBar。

关于ios - UISearchDisplayController 和 setDisplaysSearchBarInNavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21234739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com