Xcode开发iOS应用时ViewController返回按钮点击失效报错如何解决?
问题原因与修复方案
核心错误原因
报错-[UIViewController back2:]: unrecognized selector sent to instance表示你调用back2方法的对象是系统原生的UIViewController基类实例,而不是你自己编写的SecondViewController子类实例,基类本身没有实现back2、back方法,所以触发崩溃。
该问题的常见诱因是:你仅在故事板中给第二个页面设置了Storyboard ID为SecondVC,但没有给对应的视图控制器绑定自定义类SecondViewController,导致instantiateViewController方法创建出来的是默认的UIViewController对象。
具体修复步骤
- 打开项目中的故事板文件,选中第二个页面对应的视图控制器
- 切换到右侧面板的「身份检查器」(面板顶部左数第三个图标)
- 在Custom Class分组下的
Class输入框中填写SecondViewController,按下回车确认配置生效 - 重新运行项目即可解决崩溃问题
可选优化方案
你当前的两个返回方法分别适配push跳转和present跳转场景,可合并为同一个方法,避免按钮绑定错误导致的返回异常,优化后的SecondViewController代码如下:
import UIKit class SecondViewController: UIViewController { @IBAction func back(_ sender: Any) { // 自动判断当前页面的展示方式,选择对应的返回逻辑 if let navigationController = self.navigationController, navigationController.viewControllers.count > 1 { navigationController.popViewController(animated: true) } else { self.presentingViewController?.dismiss(animated: true) } } }
优化后只需保留一个返回按钮绑定上述back方法即可,两种跳转场景都可以正常返回。
内容的提问来源于stack exchange,提问作者BRSD
相关产品推荐
相关产品推荐

