【问题标题】:Viewcontroller does not work the second time it is calledViewcontroller 在第二次调用时不起作用
【发布时间】:2021-08-26 07:46:56
【问题描述】:

这是我的代码

    self.slideMenuController()?.changeMainViewController(contactNVC, close: true)

contactNVC = ContactUsViewController.swift

  1. contactNVC 工作正常。
  2. 转到另一个视图控制器
  3. 返回contactNVC时不起作用。

ContactUsViewController.swift

override func viewDidLoad() {
        super.viewDidLoad()
        print("ContactUsViewController is here")
    }

首先将打印此“ContactUsViewController is here”。 当我打电话给另一个view controller 并回到这个ContactUsViewController.swift 时,这个“ContactUsViewController is here”不会出现。

SlideMenuController /这是来自github的代码/ https://github.com/dekatotoro/SlideMenuControllerSwift

self.slideMenuController()?.changeMainViewController(contactNVC, close: true)

【问题讨论】:

  • 多一点上下文会有所帮助。 self.slideMenuController() 到底是什么?你用什么导航?它是在导航控制器内还是在其他什么地方?甚至更多的代码也会很有用,因为这里似乎只有有效的代码。
  • @VladRusu 添加其他内容?
  • 请注意,viewDidLoad() 仅在加载视图控制器时调用一次。您可能想检查viewDidAppear() 方法。每次在屏幕上显示视图控制器时都应该调用那个。
  • @VladRusu 非常感谢:3 成功了

标签: ios swift


【解决方案1】:

您应该使用 viewWillAppear() 或 viewDidAppear() 方法。每次您的视图控制器显示在屏幕上时都会调用这些方法。 因为 viewDidLoad() 通常在加载 VC 时调用一次。有时可以多次调用。例如,如果发送了内存警告,您的 VC 将从内存中卸载视图,并且下次将再次调用 viewDidLoad()。但它永远不会被连续调用。所以只需使用 viewWillAppear() 或 viewDidAppear() 方法,无论如何都会在显示视图控制器时触发。

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多