繁体   English   中英

Swift中组合的TableViews和CollectionViews

[英]Combined TableViews & CollectionViews in Swift

我被困住了...我有一个collectionView(我们称它为masterCollectionView )。 collectionView的每个单元格都包含一个数据列表。

masterCollectionView每个collectionView单元格中,我都有一个tableView,它保存每一行中的所有记录本身,并根据数据集中的某些条件分为tableView部分。

数据存储在多维数组中,我可以从云中下载该多维数组,它为masterCollectionView单元格提供了列表标题,以及每个tableView的每个列表中的节数,记录数(即行数) 。

我的问题是,在填充tableView时,我无法知道我所在的masterCollectionView单元格。 例如:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
}

上面的函数不允许我标识当前在其中构建tableView的masterCollectionView单元,因此我不知道要加载数据数组中的哪些记录。

目前,我已经在界面构建器中将以上所有内容构建为一个情节提要,以及一个对应的viewController,但可以根据建议轻松进行更改。

请帮忙。 我正在拔头发。

您可能希望每个集合视图单元格都有一个单独的表视图数据源实例。

您可以创建一个实现UITableViewDataSource的新NSObject子类,其目的仅是充当一个单元格的数据源。 该对象只能使用该单元格的数据进行配置。

然后,您将拥有一组这些实例,每个集合视图单元格一个。 当单元格加载到cellForItemAtIndexPath中时,将该单元格的表视图委托设置为数组中正确的数据源。

好的,我将首先为您提供解决问题的最快方法,尽管它易于实现,但不是解决问题的“正确”方法,我将在后面解释。

因此,最快的方法是使用视图标签。 每个UIView都有一个标记成员,该成员是一个Integer。 因此,无论您在哪里放置桌子,都可以执行此操作

我没有您的代码,所以我假设您在

func collectionView(_ collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell

您的UICollectionView功能,因此您可以在其中执行类似的操作

myTableView.tag = indexPath.row

创建标签时,应将标签设置为TableView,该标签​​将在数组中作为索引。 在您的UITableView数据源中,您可以执行此操作

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return yourDataArray[tableView.tag].count;
}

这是一种简短而又快速的方法,正确的方法是正确地分解数据,可以将UICollectionView单元作为所包含的UITableView数据源,然后在需要时加载数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM