performSegueWithIdentifier 处的“无法识别的选择器发送到实例”

Posted

技术标签:

【中文标题】performSegueWithIdentifier 处的“无法识别的选择器发送到实例”【英文标题】:"unrecognized selector sent to instance" at performSegueWithIdentifier 【发布时间】:2014-04-16 01:08:59 【问题描述】:

所以我在视图控制器中有一个以编程方式添加的按钮。因此,我创建了一个直接从根视图控制器到下一个视图控制器的推送序列。已经嵌入了导航控制器。

这是我设置按钮并添加它的目标;

registerButton = [UIButton buttonWithType:UIButtonTypeCustom];

[registerButton addTarget:self action:@selector(pushRegisterScreen) forControlEvents:UIControlEventTouchUpInside];

这就是pushRegisterScreen;

- (void) pushRegisterScreen

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

但是这会抛出这个异常;

'NSInvalidArgumentException', reason: '-[RegisterScreen _setViewDelegate:]: unrecognized selector sent to instance 0x8d70d70'

使用 Xcode 的第一天耶!

【问题讨论】:

设置异常断点。打开断点导航器并单击左下角的+。 (导航器位于 Xcode 窗口的左侧)。 【参考方案1】:

当您将视图的类(可能是您的控制器的主视图)设置为不是 UIView 子类的类时,我已经看到此错误。确保在设置控制器的自定义类(在情节提要中)时,已将其设置在控制器上,而不是视图上。

【讨论】:

你是救生员!我不小心将注册屏幕场景中的控制器和视图的类设置为从 UIViewController 子类化的 RegisterScene 类。【参考方案2】:

您是否真的在情节提要中设置了标识符@“registerSegue”?为此,请转到有问题的视图控制器并单击它,然后转到身份检查器(右侧面板)并为视图命名。如果您已经这样做了,那么问题出在另一个位置。

【讨论】:

我在情节提要中为Push Segue from Welcome Screen 设置了registerSegue 标识符。您是否建议我将原始视图称为? 从欢迎屏幕推送 Segue 是什么意思?您是否有从 UIButton 创建到情节提要中的另一个 UIViewController 的 segue? 我以编程方式创建了按钮,它不在情节提要中。所以我不得不从 View Controller 创建 segue。阅读问题。

以上是关于performSegueWithIdentifier 处的“无法识别的选择器发送到实例”的主要内容,如果未能解决你的问题,请参考以下文章

performSegueWithIdentifier 出现运行时错误,为啥?

iOS8 performSegueWithIdentifier 运行太慢

performSegueWithIdentifier:sender: 找不到我的转场

unwind segue / performSegueWithIdentifier: 问题

performSegueWithIdentifier 不起作用

performSegueWithIdentifier:从 didSelectRowAtIIndexPath 调用的方法缓慢显示视图