将 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 上运行。我需要采取的下一步是将我的事件日历转换为拆分视图。据我所知,我不需要更改已有的两个控制器(CalendarViewController
和 CalendarDetailViewController
)中的任何逻辑。
话虽如此,让它们在拆分视图上工作的最佳方法是什么?是否可以让拆分视图使用这两个控制器(因为拆分视图默认有两个控制器,TableViewController
和 ViewController
)?然后我是否需要创建另一个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的主要内容,如果未能解决你的问题,请参考以下文章
将 iPad 支持添加到 iPhone 项目:通用与两个独立的应用程序? [关闭]
将 xcode 4.6 iPhone 应用程序转换为通用应用程序
Xcode 8.1 无法将 iPad 故事板添加到具有现有 iPhone 故事板的通用应用程序
IOS(将通用更改为 ipad)我的错误我已经为 iphone 上传构建现在我们希望在新版本中这个应用程序仅适用于 ipad