【问题标题】:add property in collection view inside uitableviewcell在 uitableviewcell 内的集合视图中添加属性
【发布时间】:2016-05-20 10:11:39
【问题描述】:

我正在创建一个内部有 collectionView 的 tableView。

我做了什么: 1. 在控制器内创建了一个表格视图。 2.创建了一个自定义tableViewCell,其中包含collectionView并为其提供标签 3. 创建了一个自定义的collectionViewcell。

现在我将控制器设置为 collectionView 和 tableView 的委托和数据源。

现在tableView应该有多个tableViewcell,每个tableViewCell都有CollectionView

一个 tableViewCell 有一个部分。 问题:-

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

self.arrayModel = self.SlotsArray[indexPath.section];
}

但这里有个问题:假设我的屏幕大小显示了两个 tableViewcell,然后首先调用 tableCells 的所有方法,然后调用 collectionView 的所有方法,我希望在创建 tableViewcell 的第一部分之后,它应该调用 collectionView方法并创建它。然后转到 tableView 方法制作第二部分,然后创建它的 collectionView。

有没有办法做到这一点。

我在网上读到的某个地方,我必须继承 CollectionView 并添加一个属性索引,然后在将 viewcontroller 设置为委托和数据源时,还要设置索引。

但我已经通过 nib 创建了 CollectionView 并通过“TAG”将其添加到 tableCell 类中

self.imageCollectionView = [self.contentView viewWithTag:2511];

你能告诉我如何做到这一点吗?

【问题讨论】:

  • 我理解你的问题,但我很确定你陷入了一些令人讨厌的用户界面。从技术上讲,tableview 将一一创建每​​一行。由于您的自定义单元格有一个集合视图,因此每个单元格都会创建自己的集合视图。我不确定你的说法是否正确。我必须验证,但是,我几乎可以肯定 tableview 会创建 Cell1,并且由于 cell1 有一个 collectionview,它会创建它的 collection view,然后只有当它准备好时,tableview 才会创建 cell2。不会发生的唯一原因是如果一切都在控制器中。
  • 或者我的假设完全错误
  • 为什么单元格不是集合视图的委托/数据源?如果细胞持有它,它可能是负责任的。
  • tableview 单元格在创建时可以接收项目数组。如果此数组有 > 0 个元素,则创建一个新的集合视图并填充它,然后显示它。您可以将集合视图中的所有事件(选择、取消选择等)转发到单元格,然后从单元格转发到控制器,并在必要时从那里做任何您想做的事情。
  • 更重要的是,您的 UI 没有理由定义数据的加载/行为方式。 UI 只对数据做出反应,而不是相反。也许尽快加载所有内容可能会解决您的问题。我不知道。您实际上寻求帮助,但没有告诉我们根本问题是什么。也许它比串行加载所有内容更简单,或者可以以不同的方式解决(默认情况下,它应该使用我上面写的内容串行加载)

标签: ios objective-c iphone uitableview


【解决方案1】:

在你的情况下,你应该有一个表格视图,有单元格。每个单元格内部都会有一个集合视图。

表格视图单元格的数量将等于您的数据源的数量。众所周知,表格视图单元格将被一个一个地创建,并为每个单元格分配一个数据源,该数据源将用于填充您的集合视图(位于每个单元格内)。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    CategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifierCategory forIndexPath:indexPath];

    NSArray *arrVideos = [parentArray objectAtIndex:indexPath.row];
    [cell setCollectionData:arrVideos];

    return cell;
}

现在,在那个表格视图单元类中,实现setCollectionData 方法来填充它的集合视图:

- (void)setCollectionData:(NSArray *)collectionData 
{
    self.arrCollectionData = collectionData;
    [self.yourCollectioView reloadData];
}

现在,每个收集单元都将从这个数组中获取:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    VideoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kCellIdentifierVideo forIndexPath:indexPath];
    NSDictionary *_video = [self.arrCollectionData objectAtIndex:[indexPath row]];

    // Use this dictionary 

    [cell.lblVideoTitle setText:_video.title];

    ––––––––––
    ––––––––––

    return cell;
}

参考下图:

希望对你有帮助!!!

【讨论】:

  • 谢谢你,伙计!
【解决方案2】:

你可以看看这个,它肯定会帮助你在uitableviewcell中实现水平滚动的集合视图。

https://github.com/ThornTechPublic/HorizontalScrollingCollectionView/blob/master/GithubImages/videoGrid.gif

https://github.com/agusso/ASOXScrollTableViewCell

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多