【问题标题】:UICollectionView didSelectItemAtIndexPath ScrollingUICollectionView didSelectItemAtIndexPath 滚动
【发布时间】:2014-08-05 06:00:21
【问题描述】:

我正在使用 CollectionView 在其中显示图像。我正在使用启用分页的水平滚动,以便用户能够像在 iOS 上的应用程序屏幕上那样从右到左从图像滚动到图像。我如何能够调用 didSelectItemAtIndexPath 来检测集合视图已停止在哪个单元格上,而无需用户点击单元格?

虽然不相关:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{

    titleLabel.alpha = 1.0;
    mainTextLabel.alpha = 1.0;
    availableLabel.alpha = 1.0;
    sizeLabel.alpha = 0.0;
    sizeImage.alpha = 0.0;
    moreInfoOnSize.alpha = 0.0;

    UICollectionViewCell *datasetCell =[collectionView cellForItemAtIndexPath:indexPath];
    datasetCell.backgroundColor = [UIColor lightGrayColor]; // highlight selection

    PFObject *selectedObject = [labelFileArray objectAtIndex:indexPath.row];
    titleLabel.text = selectedObject[@"labelText"];

    PFObject *selectedObject2 = [mainTextArray objectAtIndex:indexPath.row];
    mainTextLabel.text = selectedObject[@"mainTextLabel"];

    PFObject *selectedObject3 = [availableLabelArray objectAtIndex:indexPath.row];
    availableLabel.text = selectedObject[@"availableLabel"];
    if ([availableLabel.text isEqual:@"Available"]) {
        availableLabel.backgroundColor = [UIColor greenColor];
    } else if ([availableLabel.text isEqual:@"Sorry We Are Out!"])
    {
        availableLabel.backgroundColor = [UIColor redColor];
    }

    NSLog(@"%@", indexPath);

}

还有图片

http://cl.ly/image/3x1R41073W2z

http://cl.ly/image/203Q2E3T2X44

非常感谢!

【问题讨论】:

  • didSelectItemAtIndexPath 在用户选择(点击并释放)单元格时被专门调用。你想做什么?
  • 正确。所以基本上我需要在使用通过集合视图滑动之后有 didSelectItemAtIndexPath (或其他东西)。因此,假设图像 1 正在显示。一旦用户向右滑动,图像 2 就会显示,但我需要调用它,就好像他们刚刚选择了图像 2。这有意义吗?
  • 您可以在集合视图完成滚动后调用visibleCells 以获取当前屏幕上的所有单元格。然后你可以用它们做任何你想做的事情。
  • 好的,现在我正在用 Parse 中的数据(图像)填充这些单元格。'visibleCells' 是否返回单元格的数字或实际值?您可能会注意到我是新来的,但我认为您可能是对的!您想用一些代码发布答案吗?哈哈,再次感谢你!
  • 我刚刚发布了一个关于如何获取可见单元格并从数组中获取第一个单元格的答案。

标签: ios objective-c scroll collectionview


【解决方案1】:

您可以在集合视图上调用visibleCells 以获取当前在屏幕上可见的单元格,如下所示:

// All visible cells (1 or more depending on your layout and cell sizes)
NSArray *visibleCells = [myCollectionView visibleCells];

// Get the first cell from the array
UICollectionViewCell *firstCell = visibleCells.firstObject;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多