Ios 主视图';s在拆分视图中的后向导航不使用显示模式;“自动”;或;primaryHidden“;
对于我的应用程序,我创建了一个嵌入在容器视图中的拆分视图,即拆分视图不在应用程序的根目录下 如图所示,我在主视图中添加了一个导航项,作为后退按钮,并将整个分割视图从主导航堆栈中弹出Ios 主视图';s在拆分视图中的后向导航不使用显示模式;“自动”;或;primaryHidden“;,ios,swift,uinavigationbar,uisplitviewcontroller,Ios,Swift,Uinavigationbar,Uisplitviewcontroller,对于我的应用程序,我创建了一个嵌入在容器视图中的拆分视图,即拆分视图不在应用程序的根目录下 如图所示,我在主视图中添加了一个导航项,作为后退按钮,并将整个分割视图从主导航堆栈中弹出 @IBAction func backButtonTapped(_ sender: UIBarButtonItem) { parent?.navigationController?.popViewController(animated: true) } 当我将分割视图的显示模式设置为allVisible时,
@IBAction func backButtonTapped(_ sender: UIBarButtonItem) {
parent?.navigationController?.popViewController(animated: true)
}
当我将分割视图的显示模式设置为allVisible
时,这在所有设备上都能正常工作。它适用于折叠视图(例如,在iPhone纵向模式下)和展开的拆分视图
问题:当我使用另一种显示模式,如
Auto
或primaryHidden
时,主视图中的导航按钮仍会显示,但在横向(扩展)视图中不起作用。按钮处理程序被调用,但上面的语句不会离开拆分视图。家长的导航控制器似乎无法通过这种方式访问(=无)。为什么语句在某些显示模式下不起作用,我如何才能使它起作用?这感觉有点笨拙,但它起作用了。更好的解决方案可能来自于理解为什么父导航控制器在某些显示模式下可访问,而在其他模式下不可访问
工作是通过详图视图的导航控制器并将其从堆栈中移除。此处更改显示模式,以防止出现一些难看的过渡效果
@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)
}
}
这感觉有点笨拙,但它确实起作用了。更好的解决方案可能来自于理解为什么父导航控制器在某些显示模式下可访问,而在其他模式下不可访问 工作是通过详图视图的导航控制器并将其从堆栈中移除。此处更改显示模式,以防止出现一些难看的过渡效果
@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)
}
}