我正在使用UICollectionView
内的UITableViewCell
。我已完成添加内容,并且能够在UICollectionView
内看到UITableViewCell
。
但现在我不知道如何检查在cell
的哪一行内点击UICollectionView
UITableView
{。}}。
所以,如果有人知道如何认识它,请帮助。
提前致谢。
#pragma mark
#pragma mark - UITableViewDelegate and UITableViewDatasource
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 15;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CellForCollectionView *cell = [tableView dequeueReusableCellWithIdentifier:@"CellForCollectionView"];
if (cell == nil) {
cell = [[CellForCollectionView alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellForCollectionView"];
}
cell.categoryCollectionView.delegate = self;
cell.categoryCollectionView.dataSource = self;
[cell.categoryCollectionView registerNib:[UINib nibWithNibName:@"CollectionCellForCategory" bundle:nil] forCellWithReuseIdentifier:@"CollectionCellForCategory"];
cell.lblCategoryName.text = [NSString stringWithFormat:@" Category %d",indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
#pragma mark
#pragma mark - UIcollectionViewDelegate and UIcollectionViewDatasource
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return 15;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
CollectionCellForCategory *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionCellForCategory" forIndexPath:indexPath];
cell.imagCategory.layer.borderColor = [[UIColor blackColor]CGColor];
cell.imagCategory.layer.borderWidth = 1.0f;
return cell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"%ld",(long)indexPath.row);
NSLog(@"%ld",(long)indexPath.section);
}
答案 0 :(得分:0)
自定义collectionView:
@interface IndexedCollectionView : UICollectionView
@property (nonatomic, strong) NSIndexPath* parentIndexpath;
@end
您的自定义tableViewCell(大约)
@interface CellForCollectionView : UITableViewCell
@property (nonatomic, weak) IBOutlet IndexedCollectionView* categoryCollectionView;
@end
UITableViewDataSource方法实现:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CellForCollectionView *cell = [tableView dequeueReusableCellWithIdentifier:@"CellForCollectionView"];
if (cell == nil) {
cell = [[CellForCollectionView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellForCollectionView"];
}
cell.categoryCollectionView.delegate = self;
cell.categoryCollectionView.dataSource = self;
[cell.categoryCollectionView registerNib:[UINib nibWithNibName:@"CollectionCellForCategory" bundle:nil] forCellWithReuseIdentifier:@"CollectionCellForCategory"];
cell.lblCategoryName.text = [NSString stringWithFormat:@" Category %d",indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.categoryCollectionView.parentIndexpath = indexPath;
return cell;
}
答案 1 :(得分:0)
有点偏离主题,但万一有人遇到与我自己有相同问题的集合视图单元格触及tableview工作并找到了这个问题寻找答案:
可以使用所有默认设置。因此,请确保您的视图控制器中没有其他触摸手势(例如像我这样的点击手势)阻止触摸到达集合视图单元格。
如果您有这样的手势识别器,并且想要保留它,则需要将其“cancelTouchesInView”属性设置为false。就这样。您不需要实现IUGestureRecognizerDelegate函数来使其工作(尽管如果您有多个手势识别器而不仅仅是一个,则可能会有所不同。)
答案 2 :(得分:-1)
这很简单。在“UITableView
:”方法中为cellForRowAtIndexPath
的每个单元格添加标记,即
cell.tag = indexPath.row
同样适用于UICollectionView
中的CollectionViewCell假设你有一个包含2行的tableView,它分别有2个collectionViews。
UITableView的row1将标记为0
,而其他标记为1
。
现在用户点击了UITableViewCell里面的collectionView里面的collectionViewCell
现在,如果你点击第一个UITableViewCell里面的collectionView的第一个collectionViewCell
您将获取单元格标记为0并且您已经知道self.tag
,即tableViewCell是0
现在,如果你点击第二个UITableViewCell里面的collectionView的第一个collectionViewCell
您将获取单元格标记为0并且您已经知道self.tag
,即tableViewCell是1
我认为这就是你所需要的。请告诉我你是否清楚......谢谢:)