You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在已被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的控制器截图
已被present的控制器截图

内容的提问来源于stack exchange,提问作者Muhammad Bilal Shakoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:42:32