iOS UICollectionView 仅选择部分 Cell

Posted

技术标签:

【中文标题】iOS UICollectionView 仅选择部分 Cell【英文标题】:iOS UICollectionView select only part of Cell 【发布时间】:2014-01-01 18:27:08 【问题描述】:

希望有人能就以下问题指出我。

我正在使用情节提要并创建了一个 UICollectionView,其单元格设计包括一个标题 (UIView),其中有一个 UIButton。在标题下方(仍在单元格内,我包含一个 UIImage)。

现在我添加了第二个 UIView,当使用带有标识符“showDetail”的 segue 进行选择时显示当前单元格的详细信息

视图截图如下图所示:

http://imgur.com/IEDMahB

现在在我的 UICollectionViewController 类(第一个视图)中,我添加了以下代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([[segue identifier] isEqualToString:@"showDetail"])
    
        // Custom code to get some data to be displayed on second view
        // then display the second view
    

现在一切正常。我可以正常显示第二个视图。

我唯一想要的是当单元格的标题 (UIView) 被触摸时不显示第二个视图。我可以看到,如果我触摸里面的 UIButton,它不会启动 segue,也不会显示第二个视图。 现在,如果我单击“标题”或下面的 UIImage,它会启动 Segue 并显示第二个视图。

我希望 segue 仅在 UIImage 被触摸时启动。

我尝试了一些方法:

尝试检查“发件人”对象是 UIView 还是 CustomCell,但总是出现自定义 Cell 尝试为“标题”定义一个自定义 UIView 类并添加一些“手势处理”,但即便如此,segue 也会启动。

请提供任何提示/帮助。

谢谢

【问题讨论】:

【参考方案1】:

我希望 segue 仅在 UIImage 被触摸时启动。

在源视图控制器中,您可以实现shouldPerformSegueWithIdentifier:sender:,如果您不希望在特定场合触发此转场,则返回 NO。这假设您有办法在事后检测到错误触发了 segue。

但实际上,如果您在 Interface Builder 中解开 segue 并且只在正确的时刻启动它会更容易。做你自己的手势识别,只有在应该执行的时候才调用performSegueWithIdentifier:sender:。您可以将 UIImage 放在 UIImageView 中,为该图像视图打开用户交互,为该图像视图提供一个点击手势识别器,然后离开。 (实际上,您可以在 Interface Builder 中设置 ,让 segue 从图像视图的点击手势识别器发出。)

【讨论】:

您好,感谢您的帮助。我试图在 UiIMageView 上添加手势识别(用于单击),但似乎没有考虑到它。我确定是 userInteractionnEnabled=YES 另请注意,将手势识别添加到自定义 UICollectionViewCell 工作正常...但不是它的 UiImageView 我终于设法让它按照你的方式工作。只需要确保 UIImageView 是交互式的,家长也谢谢!!!

以上是关于iOS UICollectionView 仅选择部分 Cell的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionview 在滚动时更改选择/禁用选择 - iOS

IOS:通过长按选择 UICollectionView 单元格

Swift 3 - iOS 11.2上的UICollectionview问题

ios UICollectionView 单元格选择和取消选择问题

在iOS中选择时增加uicollectionview单元格大小

无法滚动到底部 UICollectionview