我希望有人可以在下面的问题上指出我。
我正在使用storyboard并使用设计的单元格创建了一个UICollectionView,其中包含一个标题(UIView),其中有一个UIButton。在标题下面(仍然在Cell中我包括一个UIImage)。
现在我添加了第二个UIView,它显示当使用带有标识符“showDetail”的segue选择时当前单元格的详细信息
视图截图可在下图中找到:
现在在我的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。
我尝试了一些方法:
任何提示/帮助都会很棒。
由于
答案 0 :(得分:0)
我希望只有在触摸UIImage时才能启动segue。
在源视图控制器中,如果您不希望在特定场合触发此segue,则可以实现shouldPerformSegueWithIdentifier:sender:
并返回NO。这假设您有一种方法可以在事后检测到segue被错误触发。
但实际上,如果你在Interface Builder中解开了segue并且只是在恰当的时刻解决了它,那会更容易。做自己的手势识别,只有在应该执行时才调用performSegueWithIdentifier:sender:
。您可以将UIImage放在UIImageView中,打开该图像视图的用户交互,为该图像视图提供一个轻击手势识别器,然后离开。 (实际上你可以在Interface Builder中设置 ,让segue从图像视图的tap手势识别器发出。)