ios – 带有Storyboard的通用应用程序上的UISplitViewController

ios – 带有Storyboard的通用应用程序上的UISplitViewController,第1张

概述我想制作一个在iPad上使用UISplitViewControler的应用程序(据我所知,它仅适用于iPad)但我希望该应用程序具有通用性. 设置如下: 我有一个UITableView(作为主视图),当我选择一行时,它应该显示该单元格的详细视图.我正在使用故事板,我无法弄清楚如何仅为iPad实现拆分视图. 最简单的方法是什么?谢谢. 你不需要两个故事板来做这个.你可以在一个故事板中使用它们.对于 我想制作一个在iPad上使用UISplitVIEwControler的应用程序(据我所知,它仅适用于iPad)但我希望该应用程序具有通用性.

设置如下:

我有一个UItableVIEw(作为主视图),当我选择一行时,它应该显示该单元格的详细视图.我正在使用故事板,我无法弄清楚如何仅为iPad实现拆分视图.

最简单的方法是什么?谢谢.

解决方法 你不需要两个故事板来做这个.你可以在一个故事板中使用它们.对于 iphone,我们通常使用类 SWRevealViewController(如果你是iOS编码的新手… :))用于侧面菜单和用于ipad的splitvIEwcontroller我们也可以使用SWRevealVIEwController for ipad.这取决于你的要求.

对于通用应用程序,使用size Classes创建vIEwcontrollers(通常我们使用任何高度任何宽度的通用应用程序).

根据需要更改这些大小类并为ipad和iphone创建不同的vIEwcontrollers.在大多数情况下,任何高度任何宽度都可以完成工作.

创建vIEwcontrollers后,在appdelegate中,使用instantiateVIEwcontrollerWithIDentifIEr方法,加载所需的vIEwcontroller.

if (UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPad) {  // The device is an iPad running ios 3.2 or later.}else {  // The device is an iPhone or iPod touch.}

对于ipad加载splitvIEwcontroller.和iPhone的swrevealvIEwcontroller.

这是核心基础.如果您需要更多信息,请告诉我.

EDIT

您是否在故事板中看到了初始VC(vIEwcontroller)的箭头标记?此vc在启动屏幕后首先加载.在我的应用程序中,我有一个主屏幕,这对于iphone和ipad都是常见的(使用上面提到的大小类因此,我可以将此vc设置为初始VC.在这种情况下,我不需要在appdelegate中执行任何 *** 作.但是如果我有一个不同的ipad主屏幕,那么我可以在appdelegate中进行条件检查dIDFinishLaunchingWithOptions

您可以像这样加载First屏幕.您应该通过splitVC tutorilal和swrevealcontroller教程来设置侧面菜单.只有在第一个屏幕包含侧边菜单时才应加载SWrevealVC或splitVIEwcontroller.

- (BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)    {        UIStoryboard *storyboard = [UIStoryboard storyboarDWithname:@"Main" bundle:nil];        UISplitVIEwController *split = [storyboard instantiateVIEwControllerWithIDentifIEr:@"SplitVIEwController"];        [AppDelegate setRootController:split storyboard:storyboard actiontype:0];    }    else if(UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPhone)    {        UIStoryboard *storyboard = [UIStoryboard storyboarDWithname:@"Main" bundle:nil];        UIVIEwController *split = [storyboard instantiateVIEwControllerWithIDentifIEr:@"SWrevealVC"];        [AppDelegate setRootController:split storyboard:storyboard actiontype:-1];    }return YES;}+(voID)setRootController:(UIVIEwController*)controller              storyboard:(UIStoryboard*)storyboard actiontype:(int) actiontype;{    if ( UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPad && actiontype == 0)    {        UISplitVIEwController *splitVIEwController = (UISplitVIEwController *)controller;        //splitVIEwController.presentsWithGesture = false;        UINavigationController *masterNavigationController = [splitVIEwController.vIEwControllers objectAtIndex:0];        SIDeMenuVIEwController *controller = (SIDeMenuVIEwController *)masterNavigationController.topVIEwController;        controller.splitVIEwController = splitVIEwController;        splitVIEwController.delegate = (ID)controller;    }    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    [UIVIEw     TransitionWithVIEw:appDelegate.window     duration:0.5     options:UIVIEwAnimationoptionAllowAnimatedContent     animations:^(voID) {         BOol oldState = [UIVIEw areAnimationsEnabled];         [UIVIEw setAnimationsEnabled:NO];         appDelegate.window.rootVIEwController = controller;         [UIVIEw setAnimationsEnabled:oldState];     }     completion:nil];}

代码可能看起来很冗长,但要简单一点.如果你做的话,你只能理解逻辑.

总结

以上是内存溢出为你收集整理的ios – 带有Storyboard的通用应用程序上的UISplitViewController全部内容,希望文章能够帮你解决ios – 带有Storyboard的通用应用程序上的UISplitViewController所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1028419.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存