Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 以编程方式关闭折叠显示中的详图视图控制器? 问题:_Ios_Uisplitviewcontroller - Fatal编程技术网

Ios 以编程方式关闭折叠显示中的详图视图控制器? 问题:

Ios 以编程方式关闭折叠显示中的详图视图控制器? 问题:,ios,uisplitviewcontroller,Ios,Uisplitviewcontroller,在UISplitViewController折叠显示中,如何以编程方式返回主视图控制器 细节 我在谷歌上搜索了一下,但没有找到解决办法。不确定我是否使用了正确的关键字。以下是我显示详图视图控制器的方式: [self showDetailViewController:[[UINavigationController alloc] initWithRootViewController:detail] sender:self]; 我也分别尝试了这3种方法,但都不起作用: if (self.split

在UISplitViewController折叠显示中,如何以编程方式返回主视图控制器

细节 我在谷歌上搜索了一下,但没有找到解决办法。不确定我是否使用了正确的关键字。以下是我显示详图视图控制器的方式:

[self showDetailViewController:[[UINavigationController alloc] initWithRootViewController:detail] sender:self];
我也分别尝试了这3种方法,但都不起作用:

if (self.splitViewController.collapsed) {
        UIBarButtonItem *backButtonItem = self.navigationItem.leftBarButtonItem;
        (1):[backButtonItem.target performSelector:backButtonItem.action];
        (2):[[UIApplication sharedApplication] sendAction:backButtonItem.action to:backButtonItem.target from:nil forEvent:nil];
        (3):objc_msgSend(backButtonItem.target, backButtonItem.action);
}
导航项设置如VC viewDidLoad中的详细信息:

self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
self.navigationItem.leftItemsSupplementBackButton = YES;

好的,我找到了一个似乎有效的解决方案。我已经在iPhone6和iPhone6Plus上进行了测试,但我只是在30分钟前才发现它,所以它可能有一些不幸的副作用,我还没有遇到过

在斯威夫特。不过我希望这是清楚的。如果您需要我在Objective-C中提供,请告诉我

if let splitViewController = splitViewController {
    if splitViewController.collapsed {
        let viewControllers = splitViewController.viewControllers
        for controller in viewControllers {
            // PrimaryNavigationController is the navigation controller I use
            // as the split views master view, which is also set as its delegate
            // but it could be any UINavigationController that is the
            // primary controller of the split view
            if controller.isKindOfClass(PrimaryNavigationController) {
                controller.popViewControllerAnimated(true)
            }
        }
    }
}
当我想取消它时,我从我的细节视图中调用它

代码通过检查分割视图控制器是否折叠来工作,这是弹出局部视图有意义的唯一状态(对我来说)。然后,它只需在拆分视图控制器中查找当前正在使用的导航控制器,并要求它弹出其顶视图控制器。这是因为在折叠模式下,“拆分视图”主视图是堆栈中唯一的视图控制器。局部视图被“折叠”到其中,因此成为它的当前俯视图控制器,因此是弹出的俯视图控制器

似乎有效。如果它对您也有帮助,请告诉我。

这似乎有效(前提是您的主窗格中有导航控制器)


我想做完全相同的事情,这段代码对我来说很有用。我把它放在细节视图中,连接到导航栏的一个按钮上

在我的应用程序中,细节视图可以多次切换到自身,而这段代码会将一个视图返回到主视图,无论它的行有多深

@IBAction func unwindSegueId(sender: AnyObject) {
    if (self.splitViewController!.collapsed) {
        self.splitViewController!.viewControllers[0].popToRootViewControllerAnimated(true)
    }
}

我也有同样的问题。你问这个问题已经有一段时间了;你有没有想出另一个解决方案,或者你只是被卡住了?“我很想听听你取得的任何进展。”克里斯·布霍尔茨现在我认为,不应该鼓励忽略细节,因为在扩大展示中没有忽略。在我的例子中,我隐藏我的RightBarButtonim以指示当前操作已执行,您需要自己导航回。(我的详细信息VC用于添加一些记录)我的详细信息视图用于编辑项目。如果我点击视图中的“删除”按钮,则没有可编辑的项目,这会使视图无用。现在它只是使视图无效,在iPad和6+上,这在景观中是完全正确的,但在其他方面它是无用的,应该发生的是,将您带到细节视图的项目的tableview应该显示出来。现在埋在其他东西中…我会在我回到我的项目时测试这一点ASAP@jchnxu:我只是打电话给你。如果该解决方案实际上是一个解决方案,则应将其标记为该解决方案。如果没有,我们应该集中精力改进建议的一个或找到另一个。这段代码是否为您编译?除非强制转换到UINavigationController,否则我获取的“UIViewController”类型的
值没有成员“popToRootViewControllerAnimated”
@IBAction func unwindSegueId(sender: AnyObject) {
    if (self.splitViewController!.collapsed) {
        self.splitViewController!.viewControllers[0].popToRootViewControllerAnimated(true)
    }
}