我正在深入研究iPad开发并且学习很快,但在我看的每个地方,我都有疑问。在使用模板在Xcode中创建一个新的SplitView应用程序后,它会生成AppDelegate类,RootViewController类和DetailViewController类。除此之外,它还为MainWinow.xib和DetailView.xib创建.xib文件。
以下是AppDelegate类中didFinishLaunchingWithOptions
方法的代码。为什么我们将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;
}
非常感谢您的帮助!我还有很多东西需要学习,所以如果这个问题在任何方面都是荒谬的,我会道歉。我现在要继续研究这些问题!
答案 0 :(得分:4)
MainWinow.xib是每个Cocoa touch项目创建的默认窗口。它是添加所有其他窗口的窗口,通常在AppDelegate中。
AppDelegate,我假设你已经知道了。这是您的应用程序的基类。
SplitViewController是一个UISplitViewController,它使用IB添加到MainWindow.xib,但是在运行didFinishLaunchingWithOptions:之前不会添加到MainView.xib中的Window。
默认情况下,SplitViewController管理两个ViewControllers以方便您。通常这些是UITableView(在模板中称为RootViewController)和UIViewController(称为DetailViewController)。虽然如果你愿意,你可以完全删除它们。
RootViewController只是一个UITableViewController。它被添加到IB中的SplitViewController。
DetailViewController是一个UIViewController,它也会在MainWindow.xib中添加到IB中。
为什么有一个nib文件 DetailView,但不是RootView?
我相信DetailView是从nib文件加载的,以方便内存管理。但它可以很容易地以编程方式创建。 RootView没有nib,因为它已经在UISplitViewController中添加和初始化。它可以很容易地从xib文件加载。
当我双击时 MainWindow.xib文件,Interface Builder 在没有“查看”窗口的情况下启动,为什么?
这个默认的iPad模板使用名为SplitViewController的UISplitViewController,而不是其他iPhone模板的UIView Called View。
以下是代码 didFinishLaunchingWithOptions方法 在AppDelegate类中。为什么是 我们将splitViewController添加为 子视图?
SplitViewController仅存在于MainWindow.xib中,它未添加到Window(在MainWindow.xib中)。所以它在这里添加。如果它嵌套在SplitViewController中,则无需在AppDelegate中添加。
这是您想要read
的文件