在 UITableView 中的 Scrolling Filmstrip 中的每个 UICollectionViewCell 中添加 UIButton
Posted
技术标签:
【中文标题】在 UITableView 中的 Scrolling Filmstrip 中的每个 UICollectionViewCell 中添加 UIButton【英文标题】:Adding UIButton in each UICollectionViewCell in Scrolling Filmstrip within UITableView 【发布时间】:2015-08-03 16:47:32 【问题描述】:首先,让我描述一下我目前所遇到的情况。下面是我的 UICollectionView 在 UITableView 中滚动幻灯片样式的工作原理:
使用自定义 UITableViewCell 创建普通 UITableView 创建一个自定义 UIView 将添加到单元格的 contentView 自定义 UIView 将包含 UICollectionView 自定义 UIView 将成为 UICollectionView 的数据源和委托,并管理 UICollectionView 的流布局 使用自定义 UICollectionViewCell 来处理集合视图数据 使用NSNotification来通知主控制器的 UitableView 当已选择收集视图单元格并加载详细视图时。到目前为止,我已经能够创建上述内容,但正如您在图片中看到的那样,我还想在每个 UICollectionViewCell 中添加一个 UIButton,以便当我点击 UIButton 时它的图像将更改为选中标记,并且该 UICollectionViewCell 中的数据将保存到数组中。最后,当我点击右上角的三角形按钮时,它将推送到另一个视图,其中包含保存传递的所选数据的数组。
这是我所学的所有相关课程:
UITableView
ViewController.h ViewController.mUIView
ContainerCellView.h ContainerCellView.mUICollectionViewCell
CollectionViewCell.h CollectionViewCell.mUITableViewCell
ContainerCell.h ContainerCell.m我的问题是,我的 UIButton 至少无法显示(目前),下面的代码:
ContainerCellView.m
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionViewCell" forIndexPath:indexPath];
NSDictionary *cellData = [self.collectionData objectAtIndex:[indexPath row]];
...
// >>> Select Button <<<
UIButton *button = (UIButton *)[cell viewWithTag:200];
[button setFrame:CGRectMake(0, 0, 50, 60)];
[button setTitle:@"Button" forState:UIControlStateNormal];
[cell.contentView addSubview:button]; //???
// >>> End Select Button <<<<
...
return cell;
ContainerCell.m
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
// Initialization code
_collectionView = [[NSBundle mainBundle] loadNibNamed:@"ContainerCellView" owner:self options:nil][0];
_collectionView.frame = self.bounds;
[self.contentView addSubview:_collectionView];
return self;
我做错了什么,我应该如何做得更好?如果您需要更多信息,我们非常欢迎您提出要求。提前致谢。
【问题讨论】:
(UIButton *)[cell viewWithTag:200]
是否返回了您所期望的结果?
@jrisberg 你说对了。这是从我的旧环境中遗留下来的,我忽略了它。现在我用UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
替换它并显示按钮。如果您只是提出意见,我会接受您的评论作为答案。谢谢!
很高兴你得到它!
【参考方案1】:
确保(UIButton *)[cell viewWithTag:200]
正在返回您所期望的,这里的新按钮将满足您的目的。
【讨论】:
以上是关于在 UITableView 中的 Scrolling Filmstrip 中的每个 UICollectionViewCell 中添加 UIButton的主要内容,如果未能解决你的问题,请参考以下文章
尝试在用户向 iOS 中的 UITableView 添加行时动态增加 UITableView 的高度
水平 UITableView 中的垂直 UITableView
uiscrollview 中的 uitableview(滚动问题)
在 UITableView 中的 Scrolling Filmstrip 中的每个 UICollectionViewCell 中添加 UIButton