ios - 在尝试呈现 UIViewController(而不是 UITableViewController)时如何避免使用 [UITableViewController loadView]

标签 ios swift uitableview segue uicontainerview

我正在制作一个 iPad 应用程序,其中包含一个用于设置选项的 View 。 这个“选项” View 有两个容器 View ,每个容器 View 都包含一个 TableView,其中包含两种不同的选项,并且可以切换以打开或关闭这些选项。 问题是,当我尝试从我的主 ViewController 创建一个将打开选项 View 的按钮时,我收到以下错误:

Screenshot of signal SIGABRT error

在输出中使用这个:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] instantiated view controller with identifier "UIViewController-c2d-Su-6Id" from storyboard "Options", but didn't get a UITableView.'

我不知道为什么要使用底层函数 [UITableViewController loadView],因为我不希望我的选项 View 是 TableView - 表在容器 View 中。

我正在使用不同的 Storyboard ,并转至 Storyboard 引用,以模态方式呈现选项 View 。我尝试删除按钮、转场和 Storyboard 引用,用新的替换它们,并重命名我的 ViewController.swift 文件以及对它的所有引用,但没有成功

我也试过在网站上寻找其他解决方案,但我没有运气,我开始担心这可能是因为 containerViews 中的 tableViews ...

我是学习 swift 和 Xcode 的新手,所以请让您的解释简单易懂,并假设我完全无能:-)

最佳答案

我猜你可能添加了一个容器 View ,它会自动将一个“子” View Controller 放置到 Storyboard上,然后简单地将那个子 VC 的类更改为 UITableViewController --- ,正如您发现的那样,它不起作用。

要将 TableView Controller 用作 subview ,请添加您的容器 View ,然后将普通的 UITableViewController 添加到 Storyboard。然后,按住 Ctrl 键从容器 View 拖动到新的 TableView Controller ,然后从弹出菜单中选择 Embed

关于ios - 在尝试呈现 UIViewController(而不是 UITableViewController)时如何避免使用 [UITableViewController loadView],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270764/

相关文章:

ios - ARKit:ARFrame.timestamp 代表什么?

ios - 如何在 Storyboard中从一个 View 转到另一个 View

database - 核心数据。某些数据具有 'nil' 和零值

ios - 如何在 Xcode 13 中使用 Swift UI 打印到调试区域?

iphone - 加载 NSMutableArray 到 UITableView 滚动时崩溃

ios - 更改 UIRefreshControl 的位置并触发事件

swift - 展开 Segue 以重新加载更新的 TableView 单元格

ios - MapView随机标注图像

ios - 如何将 UITableView 设置为捕捉到最近的单元格?

带闭包的 Swift 变量声明