当我将最小样式设置为搜索栏时,会发生错误。我的代码在这里:
- (void)viewDidLoad
{
sc = [[UISearchController alloc] initWithSearchResultsController:nil];
sc.searchResultsUpdater = self;
sc.delegate = self;
sc.dimsBackgroundDuringPresentation = NO;
sc.searchBar.delegate = self;
self.definesPresentationContext = YES;
[sc.searchBar setPlaceholder:@"Search"];
[sc.searchBar setSearchBarStyle:UISearchBarStyleMinimal];
[sc.searchBar sizeToFit];
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];
sc.searchBar.delegate = self;
self.tableView.tableHeaderView = sc.searchBar;
}
结果(触摸内部之前):
当我触摸搜索栏时,它的开始看起来很正常。其他搜索栏样式正常。
修改
试着这样做;范围按钮出现在第二个像图片然后消失。
-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];
}
EDIT2
当我将[sc.searchBar setShowsScopeBar:YES]
放入viewDidLoad
方法时,我会获得第三个版本(触摸前搜索栏下的项目):
并且触摸界面再次看起来正常:
答案 0 :(得分:2)
Apple UISearchBarStyle
上的文档:
此属性可与
barStyle
一起使用。风格UISearchBarStyleMinimal
未提供默认背景颜色或图片 但如果这样定制的话会显示一个。
因此,当您将searchBarStyle
设置为UISearchBarStyleMinimal
时,它会删除背景图像和颜色,因此它基本上是透明的。现在要显示范围栏按钮,您必须在设置标题之前将showsScopeBar
属性设置为YES
。所以:
[sc.searchBar setShowsScopeBar:YES];
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];