1

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

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

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

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

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

是什么导致了这种行为?

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

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

4

1 回答 1

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

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

于 2012-10-22T22:03:14.513 回答