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 单元格选择和取消选择问题