【发布时间】:2015-04-09 05:12:45
【问题描述】:
我正在尝试优雅地实现 iPhone 和 iPad 版本。它们本质上是相同的控制器,但 iPhone 以单列 tableView 呈现,iPad 以多列 collectionView 呈现。
以下是我想到的选项:
一个 ViewController 为 tableView 和 collectionView 请求不同的 DataSource 和不同的 Delegate。我一直没有想到这个选项。看起来它可能会变得过于复杂。
一个 baseViewController,然后是 2 个子类,一个带有 tableView,一个带有 collectionView。类似于选项#1,但使用子类。选项 #1 更简洁,但这更容易实现。
两者都使用一个collectionView,但使用不同的UICollectionViewFlowLayouts。这是我想到的最后一个选项,并且似乎是迄今为止最好的选项,但我想知道 #1 或 #2 是否更好。
【问题讨论】:
-
您还可以为 iPhone 和 iPad 创建两个不同的视图控制器并相应地推送,您的第二种方法看起来与此类似。但是使用优化的代码
-
你也可以使用相同的委托方法来处理多个UITableView,例如通过参数传递哪个tableView实例来选择做什么。
-
我更喜欢第三种选择,因为它更容易管理和理解。
-
观看由出色的 Paul Hegarty 为斯坦福大学提供的 iTunes U 系列,但针对 iOS 7 的旧版本处理 Objective C。在“为 iPhone 和 iPad 开发 iOS 7 应用程序”系列中,在Lecture 11 Table View and iPad 中,他提出了一种非常简单的方法来准备应用程序,以便从仅 iPhone 过渡到通用(即包括 iPad)并使用
UISplitViewController类。
标签: ios objective-c uitableview uicollectionview