首页 文章

viewDidLoad和viewWillAppear使用

提问于
浏览
0

根据我的理解, viewDidLoad() 在创建视图时被调用并用于需要发生一次的事情,而 viewWillAppear() 用于需要在每次VC进入屏幕时重复的任务 .

一旦VC进入屏幕,任务执行一次并重复有什么区别?

目前,我有 View 有一堆 UILabelsUITextFields . 从技术上讲,我只需要创建和设置一次文本,但每次访问 View 时都需要完成 . 与 viewDidLoad() 相比,这种逻辑在_58616中更有意义吗?

我把他们放在 viewDidLoad() 的理由是他们只需要发生一次 . 再说一遍,你可以争辩说,每当你在那个特定的 View 上,它每次都需要发生 . 不确定我的理解是否正确......或者我是否过度思考

3 回答

  • 0

    如果没有关于您想要实现的内容的更多信息,回答您的问题有点困难,但是请记住有关视图控制器生命周期的图表可能会有所帮助:

    如果在viewDidLoad中的视图上放置UILabel或UITextField,则每次调用viewWillAppear()时它们都将继续存在,因此您无需在viewWillAppear()中再次实例化这些标签或字段 .

  • 0

    以下是如何在简单的游戏工作流程中使用它们:

    • 在主菜单UIView的ViewDidLoad中实例化UILabel(例如游戏得分)

    • 加载主菜单

    • 呈现游戏场景,玩游戏等......

    • 获得新的高分,主菜单ViewDidAppear用新分数更新UILabel,当游戏场景被解除时,UILabel将反映新分数 .

  • 0

    你错过了一个点,无论何时你创建一个新的vc实例,它的 viewDidLoad 被调用一次,这意味着如果你解雇那个vc或者弹出它(如果它是一个带有1个实例的故事,如果你提出了另一个实例它会去同样的,但是

    对于1个实例的lifeTime,调用一次 viewDidLoad ,并且每当你关闭该实例提供的vc或从堆栈中弹出该子时调用 viewWillAppear / viewDidAppear

    viewDidLoad 中注入设置代码,并且你要刷新的任何内容都将它设置在 viewWillAppear / viewDidAppear 中,假设你有一个表列出了一些项目,你在一个模态vc中添加项目,然后你在 viewWillAppear 中放置 tableView.reloadData() ,但是要将tableView添加到视图中,请在 viewDidLoad 中进行

相关问题