iOS 7中UISearchBar的范围栏未显示?

6

我正在创建一个UISearchViewController,希望将UISearchBar放在导航控制器的导航项中。以下是我的尝试但没有结果:

self.searchBar = [UISearchBar new];
self.searchBar.showsScopeBar = YES;
self.searchBar.scopeButtonTitles = @[@"Users", @"Hashtags"];
self.searchBar.delegate = self;

self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.searchController.displaysSearchBarInNavigationBar = YES;

我也尝试了以下方法:
self.searchDisplayController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
self.searchDisplayController.searchBar.scopeButtonTitles = @[@"Users", @"Hashtags"];
self.searchDisplayController.searchBar.showsScopeBar = YES;

我在这里是否遗漏了任何东西或做错了什么?

编辑:这个这个正是我所追求的。


你找到解决办法了吗?我也卡在同样的问题上了。 - Kong Hantrakool
@KongHantrakool 我还没有找到解决方案。与此同时,我正在使用导航栏中的UISegmentedControl来代替范围栏的工作。 - Ryan
感谢您的回答。 - Kong Hantrakool
4个回答

1
尝试使用以下代码。
UISearchBar* searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
searchBar.barStyle = UIBarStyleBlack;
searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"Users", @"Hashtags", nil];
searchBar.showsScopeBar = YES;
self.searchBar.delegate = self;

1
很遗憾,范围栏仍然没有显示出来。只有导航栏中的搜索栏。 - Ryan

1

只有在搜索栏处于活动状态时,范围条才会出现。搜索显示控制器隐藏了搜索栏的范围条。

如果您希望范围条始终可用,则需要进行一些黑客工作。也许其中一个可以帮助您。

如何使UISearchBar范围条始终可见?

IOS7:uisearchdisplaycontroller始终显示范围条

编辑:

您尝试过这个方向的东西吗?假设您已将搜索栏添加到导航栏的titleView中。

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    CGRect rect = self.navigationItem.titleView.superview.frame;
    rect.size.height = 88.0f;
    self.navigationItem.titleView.superview.frame = rect;
}

嗨,当scope bars在self.view或tableView.headerView中时,我没有显示问题。只是每当搜索条位于导航栏中时,scope bars就不会显示,无论是将其添加到视图然后将该视图设置为导航栏的标题视图,还是通过“self.searchController.displaysSearchBarInNavigationBar = YES;”实现。 - Ryan
啊,听起来似乎是导航栏被剪裁了。你尝试过扩展导航栏的高度吗?可能可以在视图控制器的-viewDidLayoutSubviews方法中实现这个功能。 - cnotethegr8
你找到解决方案了吗?我也遇到了同样的问题。 - Kong Hantrakool

0
尝试调整searchBar的框架:-
UISearchBar* searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake:(0,0,320,88)];

searchDisplayController 会在搜索被取消后将 searchBar 的高度重置为 44。 - cnotethegr8

0

我在Xcode的Interface Builder中的属性检查器中设置了“使用自动布局”

这对我来说完美地运作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接