如何获取单元格中标签的值

时间:2013-10-09 10:37:12

标签: ios objective-c

我使用了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);
}

2 个答案:

答案 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);
}

我希望这会有所帮助。