Objective c UISearchBar在模态表单表中具有ScopeBar
我的ViewController是一个自定义的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]按需显示相同的视图 现在,当我将视图控制器配置为显示为表单时,范围栏仅在第一次显示视图时显示。下次不显示范围栏时 将视图显示为页面工作表可以正常工作。然而,在这种情况下,我观察到,第一次范围栏已经就位
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中的一个深深的错误,它很少被弹出是相关的,现在我有一个解决办法。没有更多的欲望。谢谢你的帮助。