为什么 SplitView iPhone 模板没有 RootView 的 nib 文件?
-
26-09-2019 - |
题
我正在深入研究 iPad 开发,并且学得很快,但我到处都有疑问。使用模板在 Xcode 中创建新的 SplitView 应用程序后,它会生成 AppDelegate 类、RootViewController 类和 DetailViewController 类。除此之外,它还为 MainWinow.xib 和 DetailView.xib 创建 .xib 文件。
- 这五个文件如何协同工作?
- 为什么 DetailView 有 nib 文件,而 RootView 没有?
- 当我双击 MainWindow.xib 文件时,Interface Builder 启动时没有“查看”窗口,为什么?
下面是代码
didFinishLaunchingWithOptions
AppDelegate 类中的方法。为什么我们要添加 splitViewController 作为子视图?(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after app launch rootViewController.managedObjectContext = self.managedObjectContext; // Add the split view controller's view to the window and display. [window addSubview:splitViewController.view]; [window makeKeyAndVisible]; return YES;
}
预先非常感谢您的所有帮助!我还有很多东西要学,所以如果这个问题有任何荒谬之处,我深表歉意。我现在要继续研究这些问题!
解决方案
MainWinow.xib 是每个 Cocoa touch 项目创建的默认窗口。这是所有其他窗口都添加到的窗口,通常在 AppDelegate 中。
AppDelegate,我假设您已经知道了。这是您的应用程序的基类。
SplitViewController 是一个 UISplitViewController,它会使用 IB 添加到 MainWindow.xib 中,但在 didFinishLaunchingWithOptions 之前不会添加到 MainView.xib 中的窗口:正在运行。
默认情况下,SplitViewController 管理两个 ViewController,以方便您。通常这些是 UITableView(在模板中称为 RootViewController)和 UIViewController(称为 DetailViewController)。尽管您可以根据需要完全删除它们。
RootViewController 只是一个 UITableViewController。它被添加到IB中的SplitViewController中。
DetailViewController是一个UIViewController,它也被添加到MainWindow.xib中的IB中。
为什么有详细信息的笔尖文件,而不是rootview?
我相信 DetailView 是从 nib 文件加载的,以方便内存管理。但它也可以很容易地以编程方式创建。RootView 没有笔尖,因为它已在 UISplitViewController 中添加并初始化。它可以很容易地从 xib 文件加载。
当我双击mainwindow.xib文件时,Interface Builder在没有“视图”窗口的情况下启动,为什么?
此默认 iPad 模板使用名为 SplitViewController 的 UISplitViewController,而不是像其他 iPhone 模板那样使用名为 View 的 UIView。
以下是AppDelegate类中的DidFinishLaunchingWithOptions方法的代码。为什么我们将SplitViewController添加为子视图?
SplitViewController仅存在于MainWindow.xib中,它没有添加到Window(在MainWindow.xib中)。所以在这里添加一下。如果它嵌套在 SplitViewController 中,则无需添加到 AppDelegate 中。
这是您想要的文档 读