将多个视图连接到一个segue的优雅方式

时间:2014-10-26 07:35:51

标签: ios objective-c storyboard segue

在我的故事板中,我有一个视图控制器(称之为"源"),它推送到另一个视图控制器(让我们说"目的地")。

可以从以下三个位置之一触发推送:

  1. 表格视图标题内的UIButton
  2. 其中一个原型单元格(选中单元格)
  3. 集合视图的一个单元格,位于不同类型的原型单元格
  4. 我目前所拥有的是segra,我从这些视图中的每个视图中拖放到目标VC,并为它们提供了相同的标识符(因为它们都推送相同的VC ...) 这种方式完美无缺,除了每次击中cmd + R时出现的烦人的小东西:

    enter image description here

    好吧,我试图成为一个好公民并将我所有的争执锚定在源VC中的IBAction,我打电话给performSegueWithIdentifier:但是我无法对电池和{选举视图中的cel ...仅限于标题视图中的按钮...

    我真的不想在我的集合视图自定义类中调用源视图控制器的操作方法以及didSelectCell...中的更多代码来检查它是否是正确的细胞原型,而不是调用动作方法....所有这一切感觉最糟糕的是比有3个具有相同id的segue - 这(在我看来)在我的情况下真的有意义 - 而且也很完美......

    只是为了说清楚 - 这就是它目前的样子:

    enter image description here

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以坚持使用三个segues模式,但为每个模式提供一个单独但相关的标识符,例如PushDetailButtonPushDetailCell等。

prepareForSegue中,您可以使用hasPrefix:@"PushDetail"代替isEqual来匹配标识符以字符串开头的任何segue,而不是匹配整个字符串。