0

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

  1. 这五个文件如何协同工作?
  2. 为什么 DetailView 有 nib 文件,而 RootView 没有?
  3. 当我双击 MainWindow.xib 文件时,Interface Builder 启动时没有“查看”窗口,为什么?
  4. 下面是didFinishLaunchingWithOptionsAppDelegate 类中方法的代码。为什么我们将 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;
    

    }

非常感谢您的所有帮助!我还有很多东西要学,所以如果这个问题有任何荒谬之处,我深表歉意。我现在要继续研究这些问题!

4

1 回答 1

4

MainWinow.xib 是每个 Cocoa touch 项目创建的默认窗口。它是所有其他窗口都添加到的窗口,通常在 AppDelegate 中。

AppDelegate,我假设你已经知道了。这是您的应用程序的基类。

SplitViewController 是一个 UISplitViewController,它被添加到 MainWindow.xib 中供您使用 IB,但在运行 didFinishLaunchingWithOptions: 之前不会添加到 MainView.xib 中的窗口中。

默认情况下,SplitViewController 管理两个 ViewController 以方便您。通常这些是 UITableView(在模板中称为 RootViewController)和 UIViewController(称为 DetailViewController)。尽管您可以根据需要完全删除它们。

RootViewController 只是一个 UITableViewController。它被添加到 IB 中的 SplitViewController。

DetailViewController 是一个 UIViewController,它也在 MainWindow.xib 中为你添加到 IB 中。

为什么 DetailView 有 nib 文件,而 RootView 没有?

我相信 DetailView 是从 nib 文件加载的,以方便内存管理。但它也可以很容易地以编程方式创建。RootView 没有 nib,因为它已经在 UISplitViewController 中添加和初始化。它可以很容易地从 xib 文件中加载。

当我双击 MainWindow.xib 文件时,Interface Builder 启动时没有“查看”窗口,为什么?

此默认 iPad 模板使用名为 SplitViewController 的 UISplitViewController 而不是 UIView Called View 作为其他 iPhone 模板。

下面是 AppDelegate 类中 didFinishLaunchingWithOptions 方法的代码。为什么我们将 splitViewController 添加为子视图?

SplitViewController 仅存在于 MainWindow.xib 中,它不添加到 Window(在 MainWindow.xib 中)。所以在这里添加。如果它嵌套在 SplitViewController 中,则无需在 AppDelegate 中添加。

这是您要阅读的文件

于 2010-05-13T02:01:17.257 回答