Objective c UISearchBar带有范围按钮的最小样式错误?

Objective c UISearchBar带有范围按钮的最小样式错误?,objective-c,uisearchbar,Objective C,Uisearchbar,当我将“最小样式”设置为“搜索栏”时,出现了一些错误。我的代码在这里: - (void)viewDidLoad { sc = [[UISearchController alloc] initWithSearchResultsController:nil]; sc.searchResultsUpdater = self; sc.delegate = self; sc.dimsBackgroundDuringPresentation = NO; sc.sear

当我将“最小样式”设置为“搜索栏”时,出现了一些错误。我的代码在这里:

- (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 setshowscopebar:YES]
放入
viewDidLoad
方法时,我得到了第三个版本(触摸前搜索栏下的项目):

触摸界面恢复正常后:

苹果公司关于以下方面的文档:

此属性可与
barStyle
一起使用。风格
UISearchBarStyleMinimum
不提供默认背景色或图像 但如果按此自定义,则将显示一个

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

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

让我们从以下内容开始:为什么要将其设置为
UISearchBarStyleMinimal
?那么,为什么要设置
[sc.searchBar sizeToFit]?这是我第一次看到这个。你使用的约束有问题吗?因为我可以,我猜@实际上,ArminM应用程序用最少的样式看起来要好得多。您正在设置
sc.searchBar.delegate=self也是两次。。。也许你应该先清理你的代码,注释掉不必要的行,看看会发生什么?但是。。。从你在问题中向我展示的内容来看,情况并没有好到哪里去!根据苹果的文档:“样式UISearchBarStyleMinimal不提供默认的背景颜色或图像,但如果按此进行定制,则会显示。”这是唯一的区别。@OlegSobolev我自己尝试过,解决方法是在设置范围栏按钮标题之前,将
showscopebar
属性设置为
YES
。检查新答案。你得到和我一样的结果了吗@阿米尼。没有
[sc.searchBar设置showscopebar:YES]它看起来和你的结果一模一样。