objective-c - 将 iPhone 应用程序转换为 iPad,然后在 iPad 中使用 splitview?

标签 objective-c ios uitableview uisplitviewcontroller

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

当应用程序在 iPad 中启动时,我希望它使用 Split View Controller 。

我有两个类(class)。第一个是“Rootviewcontroller”,第二个是“Detailview” Controller 。在这两个类中,我都使用导航 Controller 。在 iPhone 中,当应用程序启动时,rootviewcontroller 是可见的。使用导航 Controller ,用户可以移动到详细 View 。

在 iPad 上,我希望 Root View Controller 位于 Split View Controller 的左侧,详细 View 位于右侧。

最佳答案

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

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

detailNav 是使用“我们项目的详细 View Controller ”创建的导航 Controller

masterNav 是与我们的 iPhone 一起使用的导航 Controller 。它在 tableView 上启动用户,允许他们选择一个项目以前进到详细 View 。

我们将这两个分配给一个数组并初始化 Split View Controller 。

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 世界还很陌生,但我希望它能有所帮助。此代码在生产中的实时应用程序上运行。

关于objective-c - 将 iPhone 应用程序转换为 iPad,然后在 iPad 中使用 splitview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915985/

相关文章:

objective-c - 与存储在 NSMutableArray 中的 UIView 进行交互

swift - 如何根据 Collection View 中的单元格选择来控制 TableView 的内容?

ios - 在 UICollectionView 和 UITableView 中优化预加载/预取图像

objective-c - UITableViewCell 子类未初始化

ios - Spotify API : How to add Spotify "Preview Track” to last fm App in Objective C

ios - 由于未捕获的异常 'NSObjectInaccessibleException' 而终止应用程序,原因 : 'CoreData could not fulfill a fault

ios - dispatch_after 循环/重复

ios - 取消应用程序图标标记(快速)执行问题

objective-c - cocoa 用户界面分析

iphone - 从 appdelegate 中的线程跨多个 View Controller 触发事件