在 iOS 应用程序中更改 rootviews 视图类型

Posted

技术标签:

【中文标题】在 iOS 应用程序中更改 rootviews 视图类型【英文标题】:Changing rootviews view type in an iOS app 【发布时间】:2011-07-11 12:00:18 【问题描述】:

在创建基于导航的应用程序时,它会自动创建一个根视图控制器,它是 UITableViewController 的子类,但在 MainWindow.xib 中,正如您所知,我看不到 UITableView 放置在根视图控制器下,但我们拖动并在那里放一个表格视图。我们是否可以简单地拖放 UIView 而不是 UITableView 并将根视图控制器类更改为子类 uiview 而不是 UITableView 并更改其方法?

或者我必须在 IB 中为根视图控制器拖一个UITableView?我是初学者,我不想做复杂的事情,那么使用UIView 作为根的最简单方法是什么。如果那不简单,我会坚持使用表格视图。

【问题讨论】:

【参考方案1】:

是的,你可以改变。您只需要更改接口构建器中的一些绑定并将 rootViewController 的超类更改为 UIViewController 而不是 UITableViewController。

更新

首先打开 rootViewController.xib 并从那里删除 tableiew 并拖放一个 UIView。将该视图绑定到文件所有者中的视图属性。将 rootViewController 的超类从 UITableViewController 更改为 UIViewController。就是这样。

这里是截图。

【讨论】:

谢谢!现在它可以工作了,但是当我打开 mainwinwdow.xib 并在 rootview 控制器下查看时,我看不到我的新视图对象,我将从那里设置和添加导航项以及导航控制工具栏。我该怎么做呢 新视图对象不会出现在 rootViewController xib 中。你不理解这个概念。如果你想添加导航项。您需要在 rootViewController 的类中添加代码。 tnx 是的,我不明白这个概念,如果我没有将它从 uitable 更改为 uiview,我可以从 mainwindow.xib 添加,但现在我不能,这是什么原因?为什么我可以在 mainwindow.xib 中看到该视图? 当您从 IB 设计视图时。我会告诉你这个秘密。假设您要创建的视图将由导航控制器推送。所以将该视图的高度设为 416。480 - 20(状态栏)-44(导航栏)。此外,要更改高度,您需要通过更改其属性从视图中删除状态栏。这样,您将获得与您设计的完全相同的输出。 主窗口中的tableView在哪里。?你不应该把任何 tableView 放在那里。事情是这样工作的,你有一个包含视图控制器的导航控制器。因此,在基于导航的模板中,视图控制器的类自动分配为 rootView 控制器,并且 nib 名称也分配给该视图控制器。该视图控制器实际上不包含任何视图。分配给该视图控制器的 nib 保存实际视图。希望你能理解。

以上是关于在 iOS 应用程序中更改 rootviews 视图类型的主要内容,如果未能解决你的问题,请参考以下文章

SplitViewController - 可以更改 rootview 和 detailview 的 z 顺序吗?

当应用程序进入后台时更改 rootview 控制器 (applicationDidEnterBackground)

如何在 iOS 中从 webview 返回到 rootview?

iOS如何在重新进入应用程序后从AppDelegate导航到rootview

页面加载后更改 barTintColor

以编程方式将 UIButton 添加到 rootview,我做错了啥?