我使用了UICollectionView,我使用单元格放置了一个标签,我将其与我的值相关联。插入单元格时,我想将文本带到选定的标签,并用它来做其他任何事情。我能怎么做?
使用此代码,我可以完全返回索引,但我无法获取单元格的内容并将其放入字符串中。
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = @"Cell";
CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
NSString *strColorCell = cell.lblCustomCell.text;
NSLog(@"Indice della cella: %i %i %@", indexPath.item, indexPath.section * 2 + indexPath.row, strColorCell);
}
答案 0 :(得分:4)
这一行
CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
不为您提供已选择的项目,它会为您提供已回收的未使用的单元格。你需要打电话
CustomCell *cell = [collectionView.dataSource collectionView:collectionView cellForItemAtIndexPath:indexPath];
获得正确的细胞。
但是,从根本上说,这是一种错误的方法:您应该使用indexPath
来查询模型的标签文本,而不是询问视图。请查看collectionView:cellForItemAtIndexPath
方法的代码,找到您使用indexPath
设置标签文本的位置。文本来自您的模型类。您应该在didSelectItemAtIndexPath
方法中执行相同的操作。
答案 1 :(得分:1)
在创建UILabel
然后在您的代码中,您可以获得标签
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
UILabel *custLabel = (UILabel*)[cell viewWithTag:labelTag];
NSString *strColorCell = custLabel.text;
NSLog(@"Indice della cella: %i %i %@", indexPath.item, indexPath.section * 2 + indexPath.row, strColorCell);
}
我希望这会有所帮助。