【问题标题】:UISearchBar with Controller in a normal UIView?UISearchBar 与普通 UIView 中的控制器?
【发布时间】:2009-12-11 21:20:57
【问题描述】:

我想要什么:

顶部带有 UISearchBar 的 UIView。开始编辑 searchBar 会使当前视图变暗并显示来自另一个 [UITableView]Controller 的搜索结果。

我的尝试:

在界面生成器中:

  • 向 UIView 添加“搜索栏和搜索显示控制器”。
  • 为我的 UITableViewController 添加一个占位符对象
  • 添加一个 UITableView 对象并将其设置为 UITableViewController 的视图
  • 将 UISearchBar 的委托设置为 UITableViewController
  • 将 UISearchDisplayController 上的所有 outlet 设置为 UITableViewController

在代码中:

  • 将 UISearchBarDelegate、UISearchDisplayDelegate 协议添加到 UITableViewController

我得到了什么:

点击编辑搜索字段会使应用程序崩溃。没有错误消息,只有 UITableViewController 中的“viewDidLoad”方法被调用。

结论:

如何为 UIView 中的 UISearchBar 使用外部控制器?

【问题讨论】:

  • "点击编辑搜索字段会使应用程序崩溃。"您应该能够调试应用程序崩溃的位置。在调试模式下运行时,堆栈跟踪是什么?

标签: iphone uisearchbar uisearchdisplaycontroller


【解决方案1】:

好的,我想通了。我发誓这是我尝试过的第一件事,但显然我做得不对。

在我的 UIViewController(其中包含 UISearchBar)中,我实例化了一个 UISearchDisplayController:

// sb = IBOutlet UISearchBar  
sc = [[SearchController alloc] initWithStyle:UITableViewStylePlain];  
sdc = [[UISearchDisplayController alloc] initWithSearchBar:sb contentsController:sc];  
sb.delegate = sc;  
sdc.delegate = sc;  
sdc.searchResultsDelegate = sc;  
sdc.searchResultsDataSource:sc = sc;  `

其中 SearchController 是我的 UITableViewController 的子类,并适应 UISearchBarDelegate 和 UISearchDisplayDelegate 协议。

现在我想一想,使用从 IB 链接的一个可能同样有效(并且以相同的方式)...

所以上面的方法对我有用,但现在结果 tableView 不会显示,除非我手动将它添加到主视图:[self.view addSubview:sc.tableView]; 但我想这是另一个问题的素材。

网络上没有任何关于非自我委托 UISearchDisplayController 的文档(就我的 google-fu 而言),所以希望有一天这对另一个 Obj-C 菜鸟有所帮助。

【讨论】:

    【解决方案2】:

    一方面,如果您的 Controller 类是从 UITableViewController 扩展而来的,那么如果您使用的是 Interface Builder,那么您就不能在其中包含搜索栏。相反,从 UIViewController 扩展并自行遵守 Table Data Source 和 Delegate 协议。

    但是,是的,要让这个答案对你来说是一个好的答案,你将不得不在你的问题中添加一些代码或其他东西。

    【讨论】:

    • 我不想要 UITableViewController 中的搜索栏。我希望该控制器向另一个视图中的 UISearchBar 提供结果的 tableView,该视图由单独的视图控制器控制。
    • 根据 Apple 的指南,每个屏幕应该只有一个视图控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多