将 iPhone 应用升级到通用,现在使用 splitview

Posted

技术标签:

【中文标题】将 iPhone 应用升级到通用,现在使用 splitview【英文标题】:upgrading iPhone app to universal and now using splitview 【发布时间】:2013-06-19 18:17:26 【问题描述】:

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

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

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

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

【讨论】:

不幸的是我没有使用 StoryBoards...也许我可能需要重写我的应用才能使用它们... 我强烈建议切换到 StoryBoards,因为它们更易于使用且功能更多。这应该会有所帮助:***.com/questions/8208499/… 谢谢!我会研究并很可能最终采用它并继续开发我的应用程序。【参考方案2】:

我知道现在回答这个问题有点晚了,但如果有人需要... 您不需要另一个 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;


[...]


【讨论】:

以上是关于将 iPhone 应用升级到通用,现在使用 splitview的主要内容,如果未能解决你的问题,请参考以下文章

iphone到ipad xib文件更改

将 iPad 支持添加到 iPhone 项目:通用与两个独立的应用程序? [关闭]

将 xcode 4.6 iPhone 应用程序转换为通用应用程序

仅在通用应用程序中为 iPhone 执行 loadView

Xcode 8.1 无法将 iPad 故事板添加到具有现有 iPhone 故事板的通用应用程序

IOS(将通用更改为 ipad)我的错误我已经为 iphone 上传构建现在我们希望在新版本中这个应用程序仅适用于 ipad