大佬教程收集整理的这篇文章主要介绍了IOS8 SplitVC TabBarController NavigationController,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我从Apple SplitView模板开始尝试相同的故事板,并在其主/主视图上添加一个TabBarController ……同样的问题.
层次结构 – TabBarController中的嵌入式主NavigationController:
SplitVC(Master)> TabBarController> NavigationController>的TableView
SplitVC(详情)> NavigationController>视图
在AppDelegate.m中添加了此代码(如此处所示,以防止DetailView以模态方式呈现):
- (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(id)sender { NSLog(@"UISplitViewController collapsed: %d",splitViewController.collapsed); if ([[UIDevice currentDevice] userInterfaceI@L_370_5@m] == UIUserInterfaceIdio@R_933_6165@) { if (splitViewController.collapsed) { UITabBarController *master = (UITabBarController *) splitViewController.viewControllers[0]; UINavigationController *masterNavigationController = (UINavigationController *)master.SELEctedViewController; UINavigationController *desTinationNavigationController = (UINavigationController *)vc; // push detail view on the navigation controller [masterNavigationController pushViewController:[desTinationNavigationController.viewControllers lastObject] animated:YES]; return YES; } } return NO; }
它工作正常…除非你在iPhone6 Plus中进行模拟,在这种情况下,在以纵向开始并选择一行后,如果你在横向旋转我会看到详细视图作为主要和次要视图.
如果不使用iPhone以纵向方式添加此代码,则会以模态方式呈现详细视图,当然也不会显示导航按钮.
编辑
经过不同的尝试和一些外部帮助,我已经向前迈出了一些步骤.
简短版本(请参阅长版本以了解您必须执行此操作的原因)
该问题的正确解决方案是继承TabBarController并使其支持一些方法:
@implementation myTabBarController - (void)showViewController:(UIViewController *)vc sender:(id)sender { if ([self.SELEctedViewController isKindOfClass:UINavigationController.class]) [self.SELEctedViewController showViewController:vc sender:sender]; else [super showViewController:vc sender:sender]; } - (UIViewController*)separateSecondaryViewControllerForSplitViewController:(UISplitViewController *)splitViewController { return [self.SELEctedViewController separateSecondaryViewControllerForSplitViewController:splitViewController]; } - (void)collapseSecondaryViewController:(UIViewController *)secondaryViewController forSplitViewController:(UISplitViewController *)splitViewController { [self.SELEctedViewController collapseSecondaryViewController:secondaryViewController forSplitViewController:splitViewController]; }
现在我遇到了viewControllers堆栈的问题:使用iPhone6Plus(唯一一个支持水平常规和紧凑)的应用程序崩溃,如果在横向时,您更改选项卡而不选择行(因此detailView仍然是前一个选项卡的那个) )然后纵向旋转.
我知道我必须实现正确管理视图堆栈的分离和折叠方法,但我无法弄清楚如何.有人可以帮忙吗?
- (void)collapseSecondaryViewController:(UIViewController *)secondaryViewController forSplitViewController:(UISplitViewController *)splitViewController { [self.SELEctedViewController.navigationController collapseSecondaryViewController:secondaryViewController forSplitViewController:splitViewController]; }
这相当于在splitViewController中返回始终为YES:collapseSecondaryViewController:ontoPriMaryViewController:delegate方法.像这样你总是丢弃辅助控制器.希望这可以帮助别人.
以上是大佬教程为你收集整理的IOS8 SplitVC TabBarController NavigationController全部内容,希望文章能够帮你解决IOS8 SplitVC TabBarController NavigationController所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。