HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了IOS8 SplitVC TabBarController NavigationController大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用大小类进行通用应用程序,我正在尝试在主/主视图中使用带有TabBarController的SplitView.在添加splitView之前一切正常,但现在App崩溃了(原因取决于视图的层次结构).

所以我从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,请注明来意。
标签:8iosios8