Objective c UISearchBar在模态表单表中具有ScopeBar

Objective c UISearchBar在模态表单表中具有ScopeBar,objective-c,ios,ipad,storyboard,uisearchbar,Objective C,Ios,Ipad,Storyboard,Uisearchbar,我的ViewController是一个自定义的UIViewController。我已将UISearchBar设置为显示范围栏 我实例化视图控制器一次,然后通过[self-presentModalViewController:mySearchController fromView:self.view]按需显示相同的视图 现在,当我将视图控制器配置为显示为表单时,范围栏仅在第一次显示视图时显示。下次不显示范围栏时 将视图显示为页面工作表可以正常工作。然而,在这种情况下,我观察到,第一次范围栏已经就位

我的ViewController是一个自定义的
UIViewController
。我已将UISearchBar设置为显示范围栏

我实例化视图控制器一次,然后通过
[self-presentModalViewController:mySearchController fromView:self.view]按需显示相同的视图

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

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

我在inspector中摆弄视图和控制器设置,但没有成功

是什么导致了这种行为

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


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

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

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

Wee。。。到目前为止,我已经在interface builder中设置了范围栏标题。按照您的建议以编程方式进行操作并不能解决问题,但是:我将标题设置为不同的值,而且宾果(BINGO),这很有效。然后我换回了正确的值,它又坏了。发生了什么事?我清理了项目,删除了缓存,重置了模拟器,但仍然保持着同样的行为。对于我的原始值和一些轻微的修改:否;对于其他值:很好。下面发生了奇怪的事情。因此,在一个新项目中,您的解决方案可能会出现问题。作品你知道为什么这是必要的吗?我不确定这种行为。在这种情况下,请尝试删除IB中的标题集,并仅以编程方式执行。这可能就是问题所在。是的,我确实从IB中删除了标题,然后清理了缓存。还是不走运。无论如何,我在标题字符串中添加了空格(
@“XYZ”
而不是
@“XYZ”
),这解决了我的问题。谢谢。如果没有看到你的项目,实际上很难预测。我所能假设的是,你们的旧头衔仍然存在,它仍然在引起问题。否则,添加空格将无法修复它。无论如何,谢谢你的接受。正如你所说,我看不到任何悬赏。是的,这也是我得出的结论。我试图在一个玩具项目中重现这种行为,但没有成功。我甚至不能用模态视图观察我的原始问题。我所能说的是,标题并不是存储在对XCode用户透明的任何地方,删除
~/Library/Developer/XCode/DerivedData/
和cleaning project中的缓存并不能解决问题。仔细检查所有连接和代码。没什么奇怪的。我认为这是XDCODEL中的一个深深的错误,它很少被弹出是相关的,现在我有一个解决办法。没有更多的欲望。谢谢你的帮助。