【问题标题】:UISearchBar in two view controllers两个视图控制器中的 UISearchBar
【发布时间】:2014-03-06 13:03:56
【问题描述】:

我进行了一些搜索,但没有帮助我找到我正在寻找的答案。

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

有两个屏幕

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

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

此视图的顶部有一个UISearchBar and DisplayController

这是我想要在我的应用中工作的内容:

当用户在 viewController A 中开始搜索时 - 一些结果将显示在搜索栏下方。然后,当用户点击搜索结果时,viewController B 将出现在屏幕上并显示结果。这将允许我按照我认为合适的方式过滤和排列结果。

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

*问题*

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

如果我查看 eBay 应用程序 - 它几乎就像栏是保存搜索文本的同一实例。

如果有人能指出我正确的方向,我将不胜感激。

谢谢!

【问题讨论】:

    标签: ios objective-c uisearchbar uisearchdisplaycontroller


    【解决方案1】:

    我会: 在你的UIViewControllerA 中写一个 XYZ 协议

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

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

    看看这个关于在 UIViewControllers 之间传输数据的关于 SA 的 Q: Passing Data between View Controllers

    【讨论】:

    • 谢谢你。我今晚会做一些阅读,看看它是否能帮助我解决我面临的问题。
    【解决方案2】:

    在控制器之间传递数据对于简单的程序来说效果很好,但我发现随着应用程序变得越来越复杂,它会变得令人困惑。另一种方法是创建一个真实的数据模型……MVC 中的“M”。

    允许访问应用程序状态的主要模型类可以是具有sharedInstance 的单例,也可以是应用程序委托拥有的唯一对象。使用这种结构,控制器之间不会直接传递数据。相反,任何需要更改状态的控制器都会告诉模型这样做,任何需要知道状态的控制器都会在显示或更新视图时向模型询问。

    【讨论】:

    • 该应用程序 99% 的数据来自 Web 服务。我已经有一个模型的单例类——它执行网络服务并允许我访问我需要的持久数据。在视图之间传递数据我主要使用 segues 和 unwind segues。我也会考虑其他选择。谢谢
    • 使用数据模型方法,您仍然使用所有相同的导航逻辑(segue...)。主要区别在于控制器之间不依赖于彼此显示的内容。它们独立地对应用程序状态的变化做出反应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多