为什么SplitView iPhone模板没有RootView的nib文件?

时间:2010-05-12 22:37:35

标签: iphone xcode ipad uisplitviewcontroller xcode-template

我正在深入研究iPad开发并且学习很快,但在我看的每个地方,我都有疑问。在使用模板在Xcode中创建一个新的SplitView应用程序后,它会生成AppDelegate类,RootViewController类和DetailViewController类。除此之外,它还为MainWinow.xib和DetailView.xib创建.xib文件。

  1. 这五个文件如何协同工作?
  2. 为什么有一个用于DetailView的nib文件,而不是RootView?
  3. 当我双击MainWindow.xib文件时,Interface Builder在没有“查看”窗口的情况下启动,为什么?
  4. 以下是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;
    

    }

  5. 非常感谢您的帮助!我还有很多东西需要学习,所以如果这个问题在任何方面都是荒谬的,我会道歉。我现在要继续研究这些问题!

1 个答案:

答案 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

的文件