我在 Storyboard中制作了一个 View ,现在我决定宁愿通过静态表格单元格显示它的数据。
我不能在 UIViewController
中使用静态 TableView (静态 TableView 仅在嵌入到 UITableViewController 实例中时有效
)。因此,我需要以某种方式将现有的 UIViewController
转换为 UITableViewController
。我已经更改了 .h 文件的父级,但没有成功。
还有其他方法吗?我真的宁愿不必在 Storyboard中创建一个新的 VC 并将所有内容都移过去,这很麻烦。
最佳答案
我将对此进行补充,因为问题是关于如何将 UIViewController 更改为 UITableViewController,并且考虑到这个问题已有一年多的历史和原始答案,虽然有效并且可能是也可能不是唯一的当时的解决方案,实际上并没有回答问题,也不是唯一的解决方案。
这是可以做到的,你只需要在 IB 中设置 table view delegate 和 datasource outlets,然后手动编辑 storyboard XML,这听起来很可怕,但实际上非常简单。
首先,将类的父类更改为 UITableViewController。 UITableViewController 已经采用了 UITableViewDatasource 和 UITableViewDelegate 协议(protocol),所以如果你的类也采用了它们,你可以删除它们:
@implementation MyTableViewController : UITableViewController
...
@end
接下来,在您的 UITableView 上为其数据源和委托(delegate)创建新的引用 socket 。最简单的方法是从 UITableView 控制拖动到它自己。弹出窗口将为您提供数据源和委托(delegate)选项。
最后,您需要更改 Storyboard XML。 Storyboard 文件可以很快变得很大。找到您正在寻找的场景的最简单方法是在身份检查器中设置 Storyboard 标识符。要直接查看 XML,请在项目导航器中右键单击 Storyboard文件并选择“打开为 -> 源代码”。现在只需搜索您将重用标识符设置为较早的任何内容。你会看到类似这样的东西:
<!-- My Table View Controller -->
<scene sceneID="EuE-XX-cCb">
<objects>
<viewController storyboardIdentifier="MY_TABLE_VIEW_IDENTIFIER" ... >
// Lots of other stuff
</viewController>
</objects>
</scene>
您需要做的就是更改打开和关闭 View Controller 标签
<viewController>
</viewController>
改为 tableViewController
<tableViewController>
</tableViewController>
就是这样!无需创建新的 UITableViewController 场景或在容器 View 中嵌入 UITableViewController。
编辑:
我还应该补充一点,UITableView 必须是 Root View 。它不能嵌入到另一个 UIView 中。
关于objective-c - 将 Storyboard中的 UIViewController 更改为 UITableViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13957346/