在Modal表单中使用ScopeBar的UISearchBar

时间:2012-10-11 20:40:42

标签: objective-c ios ipad storyboard uisearchbar

我的ViewController是自定义UIViewController <UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate>。我已经设置了UISearchBar来显示范围栏。

我实例化视图控制器一次,然后通过[self presentModalViewController:mySearchController fromView:self.view];

按需显示相同的视图

现在,当我将视图控制器配置为显示为表单时,范围栏仅在第一次显示视图时出现。下次未显示范围栏时。

将页面显示为页面工作正常。但是在这种情况下,我观​​察到第一次范围栏已经就位,而此后一旦它成为第一个响应者,它就会被动画到搜索栏中。

我在检查器中摆弄了视图和控制器设置但没有成功。

导致此行为的原因是什么?

下次显示视图时如何使范围栏显示在表单中?

当隐藏/重新显示其视图时,有没有办法防止UISearchBar进入不同的状态?

1 个答案:

答案 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];
  //..
}

除此之外,每当您想要显示示波器栏时,您都可以使用上面的行来显示和隐藏它。