两个视图控制器中的UISearchBar

时间:2014-03-06 13:03:57

标签: ios objective-c uisearchbar uisearchdisplaycontroller

我做了一些搜索但没有帮助我找到我想要的答案。

我的应用程序有一个UITabBarController,允许用户在屏幕之间切换。

有两个屏幕

Tab1:viewController A - 是UIViewController的子类。它的顶部有一个UiSearchBar,下面有其他非相关内容。

Tab2:viewController B - 是UITableViewController的子类,也符合UISearchBarDelegateUISearchDisplayControllerDelegate

此视图顶部有UISearchBar and DisplayController

我希望在我的应用中使用

当用户在viewController A中开始搜索时 - 某些结果将显示在搜索栏下方。然后,当用户点击搜索结果时,viewController B将出现在屏幕上并显示结果。这样我就可以根据需要过滤和排列结果。

如果有人看过最新版的eBay iOS应用程序 - 搜索功能就是我想要的功能。

* 问题*

我并不担心搜索是如何工作的以及过滤是如何工作的等等。我想知道的是如何链接第一个UISearchBar以显示结果并将用户带到viewController B - 用他们的搜索条件?

如果我查看eBay应用程序 - 它几乎就像条形图一样保存搜索文本。

如果有人能指出我正确的方向,我真的很感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

我愿意: 在UIViewController A

中编写协议XYZ

对您的UITabBarController进行子类化并使其符合XYZ

用户在UIViewController A中按下搜索结果后,向代理人(您的UITabBarController)发送一条消息,让他处理数据(搜索对象的数组或您需要的任何内容)传输和切换到UIViewController B

在SA上查看有关在UIViewControllers之间传输数据的问题: Passing Data between View Controllers

答案 1 :(得分:0)

在控制器之间传递数据对于简单的程序工作正常,但我发现随着应用程序变得更加复杂,它会变得混乱。另一种方法是创建一个真实的数据模型...... MVC中的“M”。

提供对应用程序状态的访问权限的主要模型类可以是具有sharedInstance的单例,也可以是由应用程序委托拥有的唯一对象。使用该结构,控制器之间不会直接传递数据。相反,任何需要更改状态的控制器都会告诉Model执行此操作,并且任何需要知道状态的控制器在显示或更新视图时都会向Model询问它。