我的ViewController是自定义UIViewController <UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate>
。我已经设置了UISearchBar来显示范围栏。
我实例化视图控制器一次,然后通过[self presentModalViewController:mySearchController fromView:self.view];
现在,当我将视图控制器配置为显示为表单时,范围栏仅在第一次显示视图时出现。下次未显示范围栏时。
将页面显示为页面工作正常。但是在这种情况下,我观察到第一次范围栏已经就位,而此后一旦它成为第一个响应者,它就会被动画到搜索栏中。
我在检查器中摆弄了视图和控制器设置但没有成功。
导致此行为的原因是什么?
下次显示视图时如何使范围栏显示在表单中?
当隐藏/重新显示其视图时,有没有办法防止UISearchBar进入不同的状态?
答案 0 :(得分:0)
在搜索delegate
中设置范围栏标题以进行开始编辑,并在搜索结束时将其设为nil
。并在此方法之后添加showScopeBar
方法。尝试并检查是否有帮助。
例如: -
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
[searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Title1", @"Title2", nil]];
[searchBar setShowsScopeBar:YES];
//...
}
在didEndEditing
,
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
[searchBar setScopeButtonTitles:nil];
[searchBar setShowsScopeBar:NO];
//..
}
除此之外,每当您想要显示示波器栏时,您都可以使用上面的行来显示和隐藏它。