UISearchBar最小样式与范围按钮错误?

时间:2015-01-25 23:37:17

标签: objective-c uisearchbar

当我将最小样式设置为搜索栏时,会发生错误。我的代码在这里:

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

结果(触摸内部之前):enter image description here

当我触摸搜索栏时,它的开始看起来很正常。其他搜索栏样式正常。

修改

试着这样做;范围按钮出现在第二个像图片然后消失。

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];
}

EDIT2

当我将[sc.searchBar setShowsScopeBar:YES]放入viewDidLoad方法时,我会获得第三个版本(触摸前搜索栏下的项目):

enter image description here

并且触摸界面再次看起来正常:

enter image description here

1 个答案:

答案 0 :(得分:2)

Apple UISearchBarStyle上的文档:

  

此属性可与barStyle一起使用。风格   UISearchBarStyleMinimal未提供默认背景颜色或图片   但如果这样定制的话会显示一个。

因此,当您将searchBarStyle设置为UISearchBarStyleMinimal时,它会删除背景图像和颜色,因此它基本上是透明的。现在要显示范围栏按钮,您必须在设置标题之前将showsScopeBar属性设置为YES。所以:

[sc.searchBar setShowsScopeBar:YES];
[sc.searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"item1",@"item2",@"item3", nil]];