在推送viewController时没有调用viewDidLoad

时间:2018-02-15 06:43:16

标签: ios swift uinavigationcontroller pushviewcontroller viewdidload

这里我试图通过单击按钮导航到另一个viewController。

它导航到下一个viewController,但viewDidLoad()没有在这里调用

这是我编写的用于在单击按钮时导航到另一个viewController的代码

@IBAction func nextButtonClicked(_ sender: Any) {
    let OrdersVC = self.storyboard?.instantiateViewController(withIdentifier: “LoginViewController") as! LoginViewController
    self.navigationController?.pushViewController(OrdersVC, animated: true)
}

这是我的viewController(我需要导航)

@IBOutlet weak var activeButton: UIButton!
@IBOutlet weak var upcomingButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
}

我可以进入课堂,但viewDidLoad()本身并没有打电话。

我该如何实现这个目标?

[![这是我的故事板] [1]] [1]

Here is my storyboard with identity inspector

4 个答案:

答案 0 :(得分:2)

你的问题是这个VC的班级没有在IB中解决;确保您加载的课程和故事板ID与您要加载的课程相匹配。例如,要加载:

  let OrdersVC = self.storyboard?.instantiateViewController(withIdentifier: “secondID") as! secondViewController
self.navigationController?.pushViewController(OrdersVC, animated: true)

图像:

enter image description here

答案 1 :(得分:0)

在查看你的问题时,我想到了两件事:

  1. 检查viewDidLoad方法是否已连接到按钮(代码看起来没问题,所以可能没有执行)。

  2. 检查您所说的LoginViewController是否真的在您实例化的viewDidLoad中(我希望您通过设置一个来测试super.viewDidLoad()被调用的事实i.icon-back { background-color: $fg-color; mask-image: url('data:image/svg…'); } 上的断点。

答案 2 :(得分:0)

只需在推送代码

之间写下一行代码
@IBAction func nextButtonClicked(_ sender: Any) {
    let OrdersVC = self.storyboard?.instantiateViewController(withIdentifier: “LoginViewController") as! LoginViewController

_ = OrdersVC.view // write this line

    self.navigationController?.pushViewController(OrdersVC, animated: true)
}

答案 3 :(得分:0)

当从情节提要中实例化ViewController的标识符不正确时,通常会发生这种情况。例如

[[self getStoryboard] instantiateViewControllerWithIdentifier:MyVC];

如果MyVC是其他ViewController的标识符,则可能会发生这种情况。