iOS UICollectionView仅选择Cell的一部分

时间:2014-01-01 18:27:08

标签: ios objective-c uiview uicollectionview segue

我希望有人可以在下面的问题上指出我。

我正在使用storyboard并使用设计的单元格创建了一个UICollectionView,其中包含一个标题(UIView),其中有一个UIButton。在标题下面(仍然在Cell中我包括一个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并显示第二个视图。

我希望只有在触摸UIImage时才能启动segue。

我尝试了一些方法:

  • 尝试检查“发件人”对象是UIView还是CustomCell,但它始终是自定义单元格出现
  • 尝试为“标题”定义一个自定义UIView类,并添加一些“手势处理”,但即使是segue也会被激活。

任何提示/帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:0)

  

我希望只有在触摸UIImage时才能启动segue。

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

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