performSegueWithIdentifier在iOS 9.x中导致NSInternalInconsistencyException,但在8.x中不导致

时间:2016-01-28 21:23:37

标签: ios objective-c iphone xcode ipad

我有一个连接到IBAction的简单按钮

- (IBAction)goToForgotPasswordPage:(id)sender {
    // this works in 8.1 but breaks in 9.0
    [self performSegueWithIdentifier:@"forgotPasswordSegue" sender:nil];
}

同样,在故事板上,我已经使用上述标识符定义并连接了一个segue。

8.x设备中的一切都很好。

但是在9.x设备上运行它,我得到:

  

' NSInternalInconsistencyException',原因:'无法使用标识符' forgotPasswordSegue'执行segue。 segue必须具有performHandler,或者必须覆盖-perform。'

我不确定是什么补救措施。

你能帮忙解释一下吗?非常感谢

2 个答案:

答案 0 :(得分:0)

Use this method below your method

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (IBAction)goToForgotPasswordPage:(id)sender {
[self performSegueWithIdentifier:@"forgotPasswordSegue" sender:nil];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.

DestinationViewController *VC = (DestinationViewController*)[segue destinationViewController];
}

答案 1 :(得分:0)

个人而言,关于这些问题。

1.当您在故事板或代码中选择时,您可以将storyboardSegue定义为一种自定义。如果你想解决它,请将此segue的属性(name:kind)修改为Show(egPush)。

2.如果您创建了UIStoryboardSegue的子类,请执行以下操作:

  

a.Override initWithIdentifier:source:destination:方法并使用它来初始化自定义segue对象。总是先打电话给超级。

     

b。执行perform方法并使用它来配置过渡动画。

Note:If your implementation adds properties to configure the segue, you cannot configure these attributes in Interface Builder. Instead, configure the custom segue’s additional properties in the prepareForSegue:sender: method of the source view controller that triggered the segue.