[英]Navigation Controller is not loading ( push , present ) another viewController
[英]Add viewcontroller to navigation controller programmatically then push another view controller
我想在導航控制器的視圖控制器數組中附加幾個視圖控制器,然后想要推送同一導航控制器的第三個視圖控制器。 我的代碼如下
let navigationController = getCurrentNavController()
let listVC = UIStoryboard.loadListViewController()
navigationController.viewControllers.append(listVC)
let detailVC = UIStoryboard.loadDetailsViewController()
navigationController.viewControllers.append(detailVC)
let thirdVC = UIStoryboard.loadThird()
navigationController.pushViewController(thirdVC, animated: true)
第三個VC是在導航控制器上推送,問題是當我彈出第三個VC時,我沒有找到detailVC或listVC。 這可能嗎? 如果是,請幫忙。
不要直接編輯viewControllers
數組。 這就是animated
參數存在的原因。
一個解決方案可能是通過執行以下操作在 0.25 秒(推送動畫的持續時間)之后添加 viewControllers:
let navigationController = getCurrentNavController()
var viewControllers = navigationController.viewControllers
let listVC = UIStoryboard.loadListViewController()
viewControllers.append(listVC)
let detailVC = UIStoryboard.loadDetailsViewController()
viewControllers.append(detailVC)
let thirdVC = UIStoryboard.loadThird()
viewControllers.append(thirdVC)
navigationController.pushViewController(thirdVC, animated: true)
DispatchQueue.main.asyncAfter(now() + 0.25) {
navigationController.setViewControllers(viewControllers, animated: false)
}
如前所述,您不想直接修改導航控制器的viewControllers
。
但是,您也不需要進行任何明確的“推送”:
let navigationController = getCurrentNavController()
let listVC = UIStoryboard.loadListViewController()
let detailVC = UIStoryboard.loadDetailsViewController()
let thirdVC = UIStoryboard.loadThird()
var vcs = navigationController.viewControllers
vcs.append(listVC)
vcs.append(detailVC)
vcs.append(thirdVC)
navigationController.setViewControllers(viewControllers, animated: true)
這將從當前視圖控制器中為thirdVC
設置動畫,就像您已經推送它一樣,但它還會將listVC
和detailVC
插入導航控制器的堆棧中,因此“后退”按鈕將帶您瀏覽detailVC
和listVC
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.