从我的rootViewController多次调用ViewController

时间:2017-08-24 06:09:16

标签: ios swift uinavigationcontroller navigation pushviewcontroller

我对UINavigationController堆栈感到困惑。 我正在显示UIViewController("SubmitRequestViewController")中的rootViewController("ViewController")

以下是我的代码:

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正在不断增加。

我试图弹出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吗?因为我也试过了。它没有用。

2 个答案:

答案 0 :(得分:1)

检查你在哪里打电话。你是在ViewWillAppear打电话吗?

如果是,这就错了。

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

答案 1 :(得分:1)

我不能再出现这个问题了。

我猜你必须两次发动推动动作。

  • viewDidLoad上的SubmitRequestViewController添加断点,以检查viewDidLoad是否被调用了两次
  • 检查你是否在故事板上开火并再次编程
  • 删除nib并再次创建以检查这是否是Xcode的错误