如何在已被present的控制器上push新控制器?
解决方案
1. 修改按钮点击事件代码
将按钮的IBAction方法替换为触发MapViewController路由的逻辑:
@IBAction func onTapDownloadButton(_ sender: Any) { routerSummary?.routeToMapViewController() }
2. 确保导航控制器可用
如果当前被present的控制器未嵌入UINavigationController,直接调用pushViewController会失效(此时navigationController为nil)。需调整present逻辑,给目标控制器套一层导航控制器:
// 替换原present代码 let targetPresentedVC = YourPresentedViewController() let navContainer = UINavigationController(rootViewController: targetPresentedVC) self.present(navContainer, animated: true)
3. 验证路由逻辑有效性
可在路由方法中添加日志排查问题,确保目标控制器实例和导航控制器存在:
func routeToMapViewController() { let destVC = MapViewController.load(from: .map) print("导航控制器状态:\(self.viewControllerSummary?.navigationController != nil)") self.viewControllerSummary?.navigationController?.pushViewController(destVC, animated: true) }
附:已被present的控制器截图
内容的提问来源于stack exchange,提问作者Muhammad Bilal Shakoor
相关产品推荐
相关产品推荐

