![](/img/trans.png)
[英]Load UITableViewController inside UIViewController inside an UINavigationController
[英]Change a UIViewController to a UITableViewController inside a storyboard?
我已经在我的故事板中看到了一个视图,我现在决定通过静态表格单元格来显示它的数据。
我无法在UIViewController
使用静态表视图( Static table views are only valid when embedded in UITableViewController instances
)。 所以,我需要以某种方式将现有的UIViewController
转换为UITableViewController
。 我已经更改了.h文件的父级,但是还没有完成。
还有另一种方法可以实现这一目标吗? 我真的宁愿不必在故事板上创建一个新的VC并将所有东西都搬过来,这是一个很大的麻烦。
我将补充一点,因为问题是关于如何将UIViewController更改为UITableViewController,并且考虑到这个问题已经超过一年了,而且原始答案是有效的,可能是也可能不是唯一的解决方案。时间,实际上并没有回答问题,也不是唯一的解决方案。
可以这样做,您只需在IB中设置表视图委托和数据源出口,并手动编辑故事板XML,这听起来很可怕,但实际上非常简单。
首先,将您的类的父级更改为UITableViewController。 UITableViewController已经采用了UITableViewDatasource和UITableViewDelegate协议,所以如果你的类也做了,你可以删除它们:
@implementation MyTableViewController : UITableViewController
...
@end
接下来,在UITableView上为其dataSource和delegate创建新的引用插座。 最简单的方法是从UITableView控制拖动到自身。 弹出窗口将为您提供dataSource和delegate选项。
最后,您需要更改故事板XML。 故事板文件可以非常快速地变得非常大。 找到您要查找的场景的最简单方法是在Identity Inspector中设置Storyboard Identifier。 要直接查看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>
您需要做的就是更改打开和关闭视图控制器标签
<viewController>
</viewController>
改为是tableViewController
<tableViewController>
</tableViewController>
而已! 无需创建新的UITableViewController场景或在容器视图中嵌入UITableViewController。
编辑:
我还要补充一点,UITableView必须是根视图。 它不能嵌入另一个UIView中。
如果您希望静态单元格表视图不占用整个屏幕,那么使用容器视图是最简单的方法。 从常规UIViewController开始,将容器视图(在对象列表中的普通UIView旁边)拖到其视图中。 根据需要调整大小 - 故事板将自动提供连接到此容器视图的视图控制器,并带有嵌入segue。 删除该控制器,拖出一个表视图控制器,然后右键从容器视图拖动到该表视图控制器,以创建一个新的嵌入segue。 可以使用其childViewControllers属性从UIViewController访问此表视图控制器(相反,如果需要,可以使用parentViewController从表视图控制器访问UIViewController)。
我所做的是在IB中创建一个UITableViewController,用文本编辑器打开Storyboard,并将UIViewController内的所有节点复制到UITableViewController。
我认为通过这种方式删除重要内容的风险较小。
在复制sections对象之前,请确保两个tableviews(UIViewController和UITableViewController)具有相同的属性集:静态或动态单元格,样式(普通或分组)等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.