我有一个可以使用的iPhone应用程序。我现在想要将此应用程序升级到通用应用程序。考虑到这一点,我已经进行了更改,比如为iPad创建另一个MainWindow.xib
,我已经开始工作了。我几乎让整个iPhone应用程序都适用于iPad。我需要采取的下一步是将我的活动日历转换为拆分视图。据我所知,我不需要改变我已经拥有的两个控制器中的任何逻辑(CalendarViewController
和CalendarDetailViewController
)。
话虽这么说,让它们在splitview上工作的最佳方法是什么?是否可以让splitview使用这两个控制器(因为splitview默认有两个控制器,TableViewController
和ViewController
)?那么我是否需要创建另一个appDelegate
或其他内容以将所有正确的信息传递回MainWindow.xib
?或者我是否需要创建一个新的SplitViewController
?如果是这样,我将如何组合我的两个日历控制器中的所有逻辑?
非常感谢任何帮助!!
答案 0 :(得分:1)
假设您正在使用StoryBoard:将SplitViewController
拖入iPad StoryBoard。还要确保您的两个所需UIViewControllers
在那里。按住Control键并点击SplitViewController
,然后将其拖到每个UIViewController
,然后选择要设置的方式。
答案 1 :(得分: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;
}
[...]
}