You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS应用启动含Table View的视图控制器时触发Unrecognized selector错误

Q: 启动内嵌Table View的视图控制器时触发「Unrecognized selector sent to instance」错误,移除所有IBOutlet后仍未解决?

问题描述

我在开发iOS应用时碰到个特别棘手的问题:启动一个内嵌了Table View的视图控制器时,突然弹出「Unrecognized selector sent to instance」的错误。
一开始我以为是IBOutlet或者IBAction连错了,毕竟这类问题大多和UI绑定有关,但我把所有IBOutlet都删掉之后,问题居然还存在!折腾了好半天才找到根因和解决办法,现在分享出来帮大家少踩坑。

解决方案

我排查下来发现,问题根本不在IBOutlet上,而是Table View的数据源/代理设置出了问题——哪怕你移除了IBOutlet,Storyboard/XIB里可能还残留着旧的代理/数据源绑定,或者代码里的设置和Storyboard的绑定冲突了。具体解决步骤如下:

  • 打开对应的Storyboard或XIB文件,选中那个内嵌的Table View,切换到右侧面板的「Connections Inspector」(就是那个箭头图标)
  • 仔细检查「dataSource」和「delegate」这两项的连接,如果看到有带感叹号的异常连接,或者连接到了错误的对象上,直接点旁边的「x」删掉
  • 回到视图控制器的代码里,确保在viewDidLoad()方法里正确设置Table View的数据源和代理,比如Swift代码:
    override func viewDidLoad() {
        super.viewDidLoad()
        // 手动绑定数据源和代理到当前控制器
        tableView.dataSource = self
        tableView.delegate = self
    }
    
  • 别忘了确认你的视图控制器已经正确遵循了UITableViewDataSource和UITableViewDelegate协议,比如类声明要写成这样:
    class MyTableContainerVC: UIViewController, UITableViewDataSource, UITableViewDelegate {
        // 控制器的其他代码...
    }
    
  • 最后一步很重要:用Command+Shift+K清理项目缓存,然后重新编译运行,这个错误就应该消失了!

内容的提问来源于stack exchange,提问作者skaldesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:20:20