替换 SplitViewController 中的 TableView

Posted

技术标签:

【中文标题】替换 SplitViewController 中的 TableView【英文标题】:Replace the TableView in a SplitViewController 【发布时间】:2012-01-22 23:04:54 【问题描述】:

我希望替换 UISplitViewController 的 MasterViewController 部分中的 UITableView。而不是UITableView,我只想要一个视图,这样我就可以在其中放置UIButtonsUILables 等。然后,这些按钮将控制 SplitView 的 DetailView 部分中显示的内容。

我在另一个地方问过这个问题,有人建议我创建一个UISplitViewController 的子类。这个人没有给出太多指导,除了保留 DetailViewController.h、.m 和 .xib 并根据我的喜好编辑 MasterViewController.h、.m 和 .xib。

以下是我已采取的步骤:

创建了一个新项目并选择了“Master-Detail Application” 未选中“使用情节提要”,以便我可以访问 xib 文件。 打开“MasterViewController.xib” 删除了“对象”下的“表格视图” 将“视图控制器”添加到“对象” 在“MasterViewController.h”中将“@interface MasterViewController:UITableViewController”更改为“@interface MasterViewController:UIViewController” 注释掉“MasterViewController.m”下任何导致问题的内容,因为它们引用了不再存在的 TableView 的属性。

然后我收到此错误:-[UIViewController _loadViewFromNibNamed:bundle:] 加载了“MasterViewController”笔尖,但未设置视图出口。”

我在正确的轨道上吗?如果我是,有人可以帮我解决我遇到的错误吗?

否则,如果我做错了,有人能指出我正确的方向吗?

谢谢!

【问题讨论】:

尝试将 UIView 而不是 UIViewController 添加到对象,然后将文件所有者的视图出口连接到该 UIView。 成功了!我没想到这么快就有解决方案。谢谢! 【参考方案1】:

现在,使用最新 Xcode 中的情节提要,这就是我所做的……

    创建一个新的 Master-Detail 项目,并允许 storyboard 打开 MainStoryboard_iPad.storyboard 点击 TableViewController 然后删除它 拖入一个新的普通 ViewController 按住 ctrl-click-drag 从作为主视图控制器的导航控制器到您的新 ViewController 删除 MasterViewController.h/.m 文件,并创建一个新类,它是 UIViewController 的子类 取您刚刚创建的替换类的名称并将其放在身份检查器的自定义类部分的类名称中

现在,添加按钮并按照您想要的方式进行连接。如果您在细节部分坚持使用单个视图控制器,您应该能够直接引用 detailViewController 并根据需要填充它;对于倍数,您可能可以使用替换转场。

对于 iPhone,步骤类似。您必须按 ctrl-click-drag 从导航控制器到新的 ViewController 并以相同的方式设置替换 ViewController.h/.m 文件。按钮的转场将是推送转场,或者您可以简单地调用 performSegueWithIdentifier:sender: 。

【讨论】:

以上是关于替换 SplitViewController 中的 TableView的主要内容,如果未能解决你的问题,请参考以下文章

splitViewController 中的最终位置何时结束?

如何将 RootViewController 设置为 SplitViewController 中的分组表

旋转 SplitViewController 会弄乱主视图中的工具栏

splitViewController 的 barButtonItem 未显示在屏幕上?

从 ModalViewController 更新 splitViewController

在 splitviewcontroller 中将数组从 masterview 发送到 detailview