故事板认为Segue不存在。但确实如此

时间:2016-06-01 07:19:38

标签: ios objective-c xcode uistoryboard uistoryboardsegue

我在Storyboard中的两个ViewControllers之间有一个show segue。致电performSegueWithIdentifier:时,我会收到NSInvalidArgumentException

Receiver (<[MY VIEWCONTROLLER SUBCLASS]: 0x7fc9e99f0640>) has no segue with identifier 'HomeToSettings''

segue肯定存在且已连接,并且在同一个原始ViewController上有许多其他segue可以正常工作。

在故事板的源代码中,segue就像所有工作的一样出现:

<connections>
<outlet property="notificationsButton" destination="hG9-8E-sv6" id="mn0-1x-Qxj"/>
<outlet property="settingsButton" destination="Fy0-au-d6J" id="r1c-fG-KOP"/>
<outlet property="tableView" destination="9bJ-Cd-hc3" id="Wuy-hJ-QVU"/>
<segue destination="ad8-yH-D5h" kind="show" identifier="HomeToCreateList" id="bsg-J2-Gp3"/>
//More segues... 
<segue destination="pNX-Jw-wau" kind="show" identifier="HomeToNotifications" id="B2t-BE-YpW"/>
<segue destination="xge-ah-WXM" kind="show" identifier="HomeToSettings" id="nTa-qO-SCb"/>
</connections>

我试过了:

  • 重命名故事板
  • 删除并重新创建segue
  • 重命名segue
  • 清洁项目
  • 重新安装应用
  • 重置模拟器上的内容和设置
  • 物理设备

Xcode和iOS是截至2016年6月1日的最新版本。

如果它有点重要,我通过附加到UIBarButtonItem的IBAction触发segue。但是,另一个与另一个UIBarButtonItem不同的ViewController的segue工作正常。

我调用segue的确切行是:

[self performSegueWithIdentifier:@"HomeToSettings" sender:self];

我真的迷失了。

1 个答案:

答案 0 :(得分:1)

例如,您show segue的{​​{1}}名为HomeToSettings,但您只能从VC-A to VC-B拨打[self performSegueWithIdentifier:@"HomeToSettings" sender:self];

如果您尝试从其他控制器调用,则会出错。

我刚刚复制了您的陈述VC-A,我在[self performSegueWithIdentifier:@"HomeToSettings" sender:self];字符串的H之前发现了一个奇怪的字符。

您可以通过键盘或后挡板的左箭头键进行检查!!

字符看起来像

enter image description here

因此,请从设置此标识符的所有位置删除它。

从下面的语句中复制标识符并使​​用它在界面构建器中设置并使用下面的语句来执行segue。

HomeToSettings

希望这会有所帮助:)