0

我有一个 iPhone 应用程序可以运行并且正在被使用。我现在想将此应用程序升级为通用应用程序。考虑到这一点,我已经进行了更改,例如MainWindow.xib为 iPad 创建了另一个,我已经开始工作了。我几乎让整个 iPhone 应用程序都可以在 iPad 上运行。我需要采取的下一步是将我的事件日历转换为拆分视图。据我所知,我不需要更改我已经拥有的两个控制器(CalendarViewControllerCalendarDetailViewController)中的任何逻辑。

话虽如此,让它们在拆分视图上工作的最佳方法是什么?是否可以让 splitview 使用这两个控制器(因为 splitview 默认有两个控制器 aTableViewController和 a ViewController)?然后我是否需要创建另一个appDelegate或其他东西来将所有正确的信息传递回MainWindow.xib?还是我需要创建一个新的SplitViewController?如果是这样,我将如何组合我的两个日历控制器中的所有逻辑?

任何帮助将不胜感激!!

4

2 回答 2

1

我知道现在回答这个问题有点晚了,但如果有人需要......你不需要另一个 appDelegate,你只需要检查(在 appDelegate 中)你的设备是否是 iPad,然后设置一个视图控制器数组MasterVC 和 DetailVC。否则,您将像现在在 iPhone 应用程序中那样设置您的 rootViewController。

这将类似于:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[...]

YourMasterVC *mvc =
[[YourMasterVC alloc] initWithStyle:UITableViewStylePlain];

UINavigationController *masterNav =
[[UINavigationController alloc] initWithRootViewController:mvc];

YourDetailVC *dvc = [[YourDetailVC alloc] init];
cvc.detailViewController = dvc;

if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {

    // On iPad
    UINavigationController *detailNav =
    [[UINavigationController alloc] initWithRootViewController:dvc];

    UISplitViewController *svc = [[UISplitViewController alloc] init];

    svc.delegate = wvc;

    svc.viewControllers = @[masterNav, detailNav];

    self.window.rootViewController = svc;
} else {
    // On iPhone
    self.window.rootViewController = masterNav;
}

[...]

}
于 2014-11-04T17:24:16.093 回答
1

假设您正在使用 StoryBoard:将 aSplitViewController拖入 iPad StoryBoard。还要确保你想要的两个UIViewControllers在那里。按住 Control 单击SplitViewController并拖动到每个UIViewController并选择您想要的设置方式。

于 2013-06-19T18:48:27.980 回答