UISearchDisplayController

UISearchDisplayController

我在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(文件的所有者?),并期望它在UISearchBarDelegateUISearchDisplayDelegate协议中实现某些完全可选的方法。

您可能想要实施

- (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/

10-12 04:39