【问题标题】:Merge UITableView and CollectionView in one View将 UITableView 和 CollectionView 合并到一个 View 中
【发布时间】:2017-05-03 06:29:46
【问题描述】:

我正在尝试创建类似于 iOS 10 音乐应用程序的 UI,UITableViewUICollectionView 都合并在一个视图中,用户可以滚动它:

我这样做的方式是我添加了一个滚动视图,然后向其中添加了表格视图和集合视图,但它在所有设备上都无法正常工作!例如在 iPhone 7 Plus 中,UITableView 的滚动会中断 UIScrollView。这样做的正确方法是什么? 谢谢

【问题讨论】:

  • 如果您使用的是表格视图,为什么要添加滚动视图?
  • @BhupatBheda 添加 UICollectionView 并合并在一起
  • 这可能都是一个表格视图,其中有一个包含集合视图的单元格。
  • 你可以制作Main tableview,然后在第一行添加新的tableview,在第二行添加新的collectionview。
  • tableview 并将collectionview 添加到其单元格中。这是一种更容易实现目标的方法。

标签: ios swift xcode uitableview


【解决方案1】:

我不久前遇到过这个问题。

我最终使用了 2 个容器视图,每个视图都通过“embed segue”连接到另外 2 个 VC。 一切都显示在同一个视图上,尽管您可以从良好的解耦中受益(将表放在视图控制器中,将集合放在另一个视图中)。

在mainVC中实现prepare:for segue,你可以在其中注入collection或table中需要的数据。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let identifier = segue.identifier else { return }

    switch identifier {
    case "calendarVC":
        if let calendarVC = segue.destination as? CalendarVC {
            calendarVC.dataProvider = dataProvider
            self.calendarVC = calendarVC
        }
    case "eventsVC":
        if let eventsVC = segue.destination as? EventsVC {
            self.eventsVC = eventsVC
            eventsVC.dataProvider = dataProvider
        }
    default: break
    }
}

您可以看到我在一个屏幕上拥有所有内容:

【讨论】:

  • 我已经使用成功了!如果表中的数据依赖于集合等,则可以使用委托。但是从您的示例中,我可以看到它比这更容易。但值得一提。
  • 有什么方法可以创建示例代码吗?谢谢
  • 这是我的应用程序:github.com/lauracalinoiu/MaintainStreak/tree/master/… MainVC 包含委托,请参阅 viewWillAppear。每个 vc 都是另一个 vc 的代表。
【解决方案2】:

@Mc.Lover U 可以使用 UITableview 作为基本视图,然后将一个 tableview 单元格用于库,一个集合视图单元格用于最近添加的项目。 现在在 cellForRoAatIndexPath 中加载第 0 节的第一个表格视图单元格和第 1 节的第二个集合视图单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2017-03-15
    相关资源
    最近更新 更多