【问题标题】:UITableView && UICollectionView in one controller?UITableView && UICollectionView 在一个控制器中?
【发布时间】:2015-04-09 05:12:45
【问题描述】:

我正在尝试优雅地实现 iPhone 和 iPad 版本。它们本质上是相同的控制器,但 iPhone 以单列 tableView 呈现,iPad 以多列 collectionView 呈现。

以下是我想到的选项:

  1. 一个 ViewController 为 tableView 和 collectionView 请求不同的 DataSource 和不同的 Delegate。我一直没有想到这个选项。看起来它可能会变得过于复杂。

  2. 一个 baseViewController,然后是 2 个子类,一个带有 tableView,一个带有 collectionView。类似于选项#1,但使用子类。选项 #1 更简洁,但这更容易实现。

  3. 两者都使用一个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


【解决方案1】:

所以我最终选择了 1 个 UICollectionView,IMO 效果很好。

我只需要为 3 个部分编写条件句:

  1. 返回不同的collectionViewFlowLayouts
  2. collectionView:layout:sizeForItemAtIndexPath: 返回不同的大小
  3. layoutSubviewsUICollectionViewCell 的不同布局

能够使用相同的UICollectionViewCell 是一个非常大的优势,因为我在单元格中实现了许多按钮,并且我不必在UICollectionViewCell 和@ 中复制代表以实现完全相同的逻辑987654326@。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多