gpt4 book ai didi

ios - 分割 View 中主视图的后退导航不适用于显示模式 "Auto"或 "primaryHidden"

转载 作者:行者123 更新时间:2023-11-29 05:52:09 26 4
gpt4 key购买 nike

对于我的应用程序,我创建了一个嵌入容器 View 中的 Split View,即 Split View不在应用程序的根目录。

如图所示,我向主视图添加了一个导航项,用作后退按钮,并将整个分割 View 从主导航堆栈中弹出。

@IBAction func backButtonTapped(_ sender: UIBarButtonItem) {
parent?.navigationController?.popViewController(animated: true)
}

当我将分割 View 的显示模式设置为 allVisible 时,这在所有设备上都运行良好。它适用于折叠 View (例如在 iPhone 纵向模式下)和展开的分割 View 。

enter image description here

问题:当我使用其他显示模式(例如AutoprimaryHidden)时,主视图中的导航按钮仍然显示但不起作用在横向(扩展) View 中。按钮处理程序被调用,但上面的语句不会导航离开分割 View 。父级的导航 Controller 似乎无法通过这种方式访问​​(= nil)。为什么该语句在某些显示模式下不起作用,如何使其起作用?

最佳答案

这感觉有点笨拙,但它确实有效。更好的解决方案可能来自于理解为什么父导航 Controller 在某些显示模式下可以访问,但在其他显示模式下却不能访问。

有效的方法是通过详细 View 的导航 Controller 并将其从堆栈中删除。此处更改显示模式是为了防止出现一些难看的过渡效果。

@IBAction func backButtonTapped(_ sender: UIBarButtonItem) {

if (splitViewController!.viewControllers.count > 1) {
// master and detail visible in split view
let detailViewController = splitViewController!.viewControllers[1]
splitViewController!.preferredDisplayMode = .primaryHidden
detailViewController.navigationController?.popViewController(animated: true)
} else {
// split view collapsed into single view mode (e.g. iPhone portrait)
parent?.navigationController?.popViewController(animated: true)
}
}

关于ios - 分割 View 中主视图的后退导航不适用于显示模式 "Auto"或 "primaryHidden",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55570031/

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