如何在一个 viewController 上使用多个搜索栏来访问 Swift 中的不同 JSON 数据?
Posted
技术标签:
【中文标题】如何在一个 viewController 上使用多个搜索栏来访问 Swift 中的不同 JSON 数据?【英文标题】:How to use multiple search bars on one viewController to access different JSON data in Swift? 【发布时间】:2015-09-14 19:01:08 【问题描述】:我有一个 viewController,上面有 3 个不同的搜索栏,每个搜索栏旁边都有一个按钮。三个搜索栏用于不同的类别(即电影、电视节目),当您按下它旁边的按钮时,它假设根据在搜索字段中输入的内容随机找到一个项目。如果视图控制器中只有一个搜索栏通过将数据附加到数组,我知道如何单独访问 JSON 数据,但如果同一视图控制器上有多个搜索栏则不知道。
【问题讨论】:
对不起,我不能给你正确的答案,因为它被某个人否决了......所以必须继续搜索,或者问选民他的问题是什么: -) 【参考方案1】:到目前为止,最好的选择是为每个搜索栏设置独立的委托对象。
第二种选择是将三个搜索栏中的每一个保存在它自己的属性上,在委托方法中进行区分,如
if searchBar == self.moviesSearchBar
//
else if searchBar == self.tvshowSearchBar
//
另一种选择是重新考虑 UI,只有一个 searchBar 和一个分段控件来切换搜索范围。
【讨论】:
感谢您的回答,但是如何在同一个 viewController 上拥有多个独立的 UISearchBarDelegates? 它不必在视图控制器上。实际上这是一个不会消失的坏习惯(也因为苹果的示例代码没有强调它,而是作为架构的蓝图)。最重要的架构原则是SOLID principles。实现委托和数据源违反了其中的几个,最重要的是Single Responsibility Principle。 搜索“ios 海量视图控制器”了解更多关于此主题的信息。【参考方案2】:简答:使用标签属性(整数)来识别每一个。
长答案:
你可以通过 1) Interface Builder 的 View 部分。见图。 2) 以编程方式 yourSearchBar.tag =
然后,使用 UISearchBarDelegate 的 func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
searchBar 参数来确定哪个搜索栏触发了委托调用。
确实,您应该尽可能遵循 SOLID 原则。
【讨论】:
以上是关于如何在一个 viewController 上使用多个搜索栏来访问 Swift 中的不同 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在一个 viewController 上使用多个搜索栏来访问 Swift 中的不同 JSON 数据?
如何在使用它的 ViewController 上调整自定义(在单独的文件中创建)UIView 高度?
如何在 ViewController 及其 NavigationController 上添加 UIview