我在UIToolbar中有一个与它绑定的UISearchDisplayController的UISearchBar。我希望UISearchDisplayController的结果显示在UISearchBar下方的弹出框中,但我对此遇到了麻烦。我很确定这是因为没有设置contentController,但是我找不到在哪里将contentController分配给在Interface Builder中创建的UISearchDisplayController。我尝试过以编程方式进行创建,并调用initwithsearchbar:和contentscontroller:但是我认为,只有当我不想以编程方式创建搜索栏和控制器时,该方法才有效,任何帮助都很棒!
最佳答案
使UISearchDisplayController
仅可与另一个UIViewController
(如您提到的contentsController
)一起使用。尽管它可以与任何UIViewController
一起使用,但它的主要用途(也是最不痛苦的用途)旨在与UITableViewController
一起使用。contentsController
应该是“负责管理要搜索的原始内容”。如果控制器未管理项目集合,则无需搜索任何内容。 UITableView
是管理多个项目的主要标准控制器。
如果您的UISearchBar
位于UIToolbar
中,则该工具栏可能位于由UIViewController
管理的主视图中。如果您在运行时以编程方式访问readonly contentsController
值,那就是我希望您能找到的。
当您将搜索控制器放到笔尖中时,Xcode4(可能还有InterfaceBuilder)会创建许多连接。他们现在指向该UIViewController
(文件的所有者?),并期望它在UISearchBarDelegate
和UISearchDisplayDelegate
协议中实现某些完全可选的方法。
您可能想要实施
- (void)searchBar:(UISearchBar *)searchBar
textDidChange:(NSString *)searchText {
// called when text changes (including clear)
NSLog(@"[%@ %@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd));
}
在神秘的
contentsController
上并在每次键入文本时执行风选?(祝好运)
我怀疑您可能根本不希望在此组合中使用
UISearchDisplayController
。关于objective-c - 在哪里设置在UI Builder中创建的UISearchDisplayController的contentView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6193285/