我将对此进行补充,因为问题是关于如何将 UIViewController 更改为 UITableViewController,并且鉴于这个问题已有一年多的历史了,并且原始答案是有效的,并且可能是也可能不是唯一的解决方案时间,实际上并没有回答问题,也不是唯一的解决方案。
这样做是有可能的,你只需要在 IB 中设置 table view delegate 和 datasource outlets,并手动编辑 storyboard XML,这听起来很吓人,但实际上很容易。
首先,将类的父类更改为 UITableViewController。UITableViewController 已经采用了 UITableViewDatasource 和 UITableViewDelegate 协议,所以如果你的类也这样做了,你可以删除它们:
@implementation MyTableViewController : UITableViewController
...
@end
接下来,在 UITableView 上为其 dataSource 和委托创建新的引用出口。最简单的方法是控制从 UITableView 拖动到自身。弹出窗口将为您提供数据源和委托选项。
最后,您需要更改情节提要 XML。故事板文件可以很快变得相当大。找到您正在寻找的场景的最简单方法是在 Identity Inspector 中设置 Storyboard Identifier。要直接查看 XML,请在项目导航器中右键单击情节提要文件并选择“打开为 -> 源代码”。现在只需搜索您之前设置的重用标识符。你会看到类似这样的东西:
<!-- My Table View Controller -->
<scene sceneID="EuE-XX-cCb">
<objects>
<viewController storyboardIdentifier="MY_TABLE_VIEW_IDENTIFIER" ... >
// Lots of other stuff
</viewController>
</objects>
</scene>
您需要做的就是更改打开和关闭视图控制器标签
<viewController>
</viewController>
改为 tableViewController
<tableViewController>
</tableViewController>
而已!无需创建新的 UITableViewController 场景或在容器视图中嵌入 UITableViewController。
编辑:
我还应该补充一点,UITableView 必须是根视图。它不能嵌入到另一个 UIView 中。