2

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

2 回答 2

5

这条线

CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

不会你已选择的项目,它会给你一个已回收的未使用单元格。你需要打电话

CustomCell *cell = [collectionView.dataSource collectionView:collectionView cellForItemAtIndexPath:indexPath];

得到正确的单元格。

但是,从根本上说,这是一种错误的方法:您应该使用indexPath向模型查询标签的文本,而不是向视图查询。看一下你collectionView:cellForItemAtIndexPath方法的代码,找到你indexPath用来设置标签文本的地方。文本来自您的模型类。你应该在你的didSelectItemAtIndexPath方法中做同样的事情。

于 2013-10-09T10:43:11.773 回答
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);
}

我希望这有帮助。

于 2013-10-09T10:42:47.267 回答