gpt4 book ai didi

ios - 以编程方式关闭折叠显示中的详细 View Controller ?

转载 作者:可可西里 更新时间:2023-11-01 03:31:41 25 4
gpt4 key购买 nike

问题

在 UISplitViewController 折叠显示中,如何以编程方式返回到主视图 Controller ?

详情

我在谷歌上搜索过,但没有找到解决方案。不确定我是否使用了正确的关键字。这就是我显示细节 View Controller 的方式:

[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;

最佳答案

好的,我找到了一个似乎有效的解决方案。我已经在 iPhone 6 和 iPhone 6 Plus 上测试过它,但我三十分钟前才发现它,所以它可能有一些我还没有遇到的不幸的副作用。

速度很快。我希望它很清楚。如果您需要我在 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)
}
}
}
}

当我想关闭它时,我会从我的详细信息 View 中调用它。

代码通过检查 Split View Controller 是否折叠来工作,这是弹出详细 View 有意义的唯一状态(无论如何对我来说)。然后它只是在 Split View Controller 中查找当前正在播放的导航 Controller ,并要求它弹出它的顶 View Controller 。这是可行的,因为在折叠模式下, Split View主视图是堆栈中唯一的 View Controller 。细节 View 被折叠“进入”它,因此成为它的当前顶 View Controller ,因此是被弹出的那个。

似乎有效。让我知道它是否也适合您。

关于ios - 以编程方式关闭折叠显示中的详细 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27621126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com