3

我为 iPhone 制作了一个日记应用程序,我想让它通用(iPhone 和 iPad)。

当应用程序在 iPad 中启动时,我希望它使用拆分视图控制器。

我有两节课。第一个是“Rootviewcontroller”,第二个是“Detailview”控制器。在这两个类中,我都使用导航控制器。在 iPhone 中,当应用程序启动时,rootviewcontroller 是可见的。使用导航控制器,用户可以移动到详细视图。

在 iPad 上,我希望根视图控制器位于拆分视图控制器的左侧,而详细视图位于右侧。

4

2 回答 2

4

如果您查看 Apple 文档,则只需在初始化 UISplitViewController 时分配两个视图控制器。这是 Apple 文档的链接 - http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html

这是一个来自我们实际 iOS 应用程序的示例(更改了一些变量名称以使其易于理解)。我们基本上确定设备是否是 iPad,然后构建主导航控制器。

detailNav 是使用“我们项目的详细视图控制器”创建的导航控制器

masterNav 是我们 iPhone 使用的导航控制器。它在 tableView 上启动用户,允许他们选择一个项目以前进到详细视图。

我们将这两个都分配给一个数组并初始化拆分视图控制器。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detailVC];
    NSArray *vcs = [NSArray arrayWithObjects:masterNav, detailNav, nil];
    UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
    [splitViewController detailVC];
    [splitViewController setViewControllers:vcs];
    [[self window] setRootViewController:splitViewController];
} else {
    [[self window] setRootViewController:masterNav];
}

这很可能不是最佳代码或最佳实践,因为我和我的团队对 iOS 世界还很陌生,但我希望它有所帮助。此代码在生产中的实时应用程序上运行。

于 2012-06-06T14:38:09.743 回答
1

这是有关如何执行此操作的苹果文档:http: //developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html

要在 iPad 视图控制器中实现拆分视图,如果要更改拆分视图所在的一侧,可以将其子类化并在右侧重绘它。希望这可以帮助!

于 2012-06-06T14:34:02.827 回答