0

我對UINavigationController堆棧有點困惑。 我從我的rootViewController("ViewController")中顯示我的UIViewController("SubmitRequestViewController")ViewController從我的rootViewController多次調用

下面是我的代碼:

let controller = SubmitRequestViewController.init(nibName: "SubmitRequestViewController", bundle: nil) 
    self.navigationController?.pushViewController(controller, animated: true) 

現在我只是想從SubmitRequestViewController回來我rootViewController

//Home Button 
@objc fileprivate func backHome() { 
    let _ = self.navigationController?.popToRootViewController(animated: true) 
} 

//Back Button 
@objc fileprivate func backButton() { 
    let _ = self.navigationController?.popViewController(animated: true) 
} 

如果我再次去我的「SubmitRequestViewController」它獲得兩次電話。

所以這是持續的。如果我將重複上述步驟,它會多次呼叫。

現在我得到的是: -

navigationController.viewControllers.count是越來越continuesly增加。

我想彈出到navigationController但仍然存在。

我想這也: -

self.navigationController?.dismiss(animated: true, completion: nil) 

其實我開火,我DrawerViewController類的通知: -

//Submit Request 
    else if itemArray[indexPath.row].contains("SUBMIT REQUEST") == true { 
     tableView.deselectRow(at: indexPath, animated: false) 
     self.dismiss(animated: true, completion: nil) 
     NotificationCenter.default.post(name: Notification.Name(rawValue : AssessNowKyes.submitRequest), object: nil) 
    }. 

我打電話在我ViewControllerClass: -

override func viewDidLoad() { 
    super.viewDidLoad() 
    NotificationCenter.default.addObserver(self, selector: #selector(submitRequestClicked), name: Notification.Name(rawValue : AssessNowKyes.submitRequest), object: nil) 
} 

//Submit Request Clicked 
@objc fileprivate func submitRequestClicked() { 
    let controller = SubmitRequestViewController.init(nibName: "SubmitRequestViewController", bundle: nil) 
    self.navigationController?.pushViewController(controller, animated: true) 
} 

我正在這樣做。我不知道我必須刪除Observer嗎?因爲我也嘗試過。它不工作。

+0

你可以嘗試在主線程上運行popviewcontroller方法嗎? – Basheer

+0

remove let _ =,self.navigationController?.popToRootViewController(animated:true)是什麼需要 –

+0

U只表示這個self.navigationController?.popViewController(animated:true)? – kishor0011

回答

1

檢查要調用的如果是這種這種錯誤

let controller = SubmitRequestViewController.init(nibName: "SubmitRequestViewController", bundle: nil) 
    self.navigationController?.pushViewController(controller, animated: true) 
+0

你的意思是我在ViewWillAppear中寫它? – kishor0011

+0

是的,我的意思是,或者當你介紹這個rootController時觸發的任何函數 –

+0

其實我正在做的是我正在發射通知。我將關閉抽屜,然後我會發出通知並致電。 – kishor0011

1

我不能再出現這個問題你ViewWillapper

調用。

我想你必須發射兩次推動動作。

  • viewDidLoadSubmitRequestViewController添加斷點檢查viewDidLoad被稱爲兩次
  • 如果你開除它的故事板,再編程
  • 刪除筆尖,再創檢查,如果這是Xcode中
  • 的錯誤
  • 檢查
+0

好的,我會嘗試一次。謝謝 – kishor0011

相關問題