【问题标题】:iOS/Swift: in which function between viewDidLoad and viewWillAppear am I supposed to query a database?iOS/Swift:我应该在 viewDidLoad 和 viewWillAppear 之间的哪个函数中查询数据库?
【发布时间】:2015-08-29 13:00:01
【问题描述】:

在我的应用程序中,由 Swift 和 XCode 6 开发,我必须查询一个数据库,然后根据该答案我将修改并显示一些 UI 小部件,在我的情况下,它们是三个彩色按钮,我必须更改包含数字的文本。 这些按钮指示分配给用户的任务数量,并根据任务的优先级具有不同的颜色。

那么,我是否应该在 viewDidLoad() 函数中查询数据库,然后根据答案更改 viewWillAppear 中的按钮文本?对吗?

【问题讨论】:

    标签: ios database xcode swift viewdidappear


    【解决方案1】:

    是的,您可以在 viewDidLoad 中查询它,但如果您在 viewWillAppear 中查询它会更好,因为 viewDidLoad 在第一次加载视图时调用一次,并且永远不会再次调用,除非视图会解开但每次调用 viewWillAppear 例如您有一个视图它内部有导航视图,您可以在另一个视图中导航,因此当您按下返回按钮时,viewDidLoad 不会调用,但是 viewWillAppear 将始终调用。

    【讨论】:

      【解决方案2】:

      是的,您可以在 viewDidLoad 中查询并在 viewDidAppear 中进行 UI 修改。

      其实这取决于你的需要。 如果您的结果每次都会改变,或者如果您想在每次视图显示时刷新数据,则在 viewWillAppear 或 viewDidAppear 中查询和修改 UI,因为 viewDidLoad 只会在您的视图首次加载时查询一次。

      【讨论】:

      • 非常感谢。我认为我需要更动态的东西,所以我会使用 view[Did/Will]Appear...但有什么区别?
      【解决方案3】:

      您可以随时查询数据库。

      ViewDidLoad 只会在视图控制器的每个实例中调用一次。它通常用于初始化对象。

      在视图[Will/Did]看来,您通常会通过设置标签文本和图像视图图像来更新您的 UI 以反映您拥有的最新数据。

      如果您不需要在每次出现视图时都重新查询数据库,那么您描述的方法是正确的。

      【讨论】:

      • 谢谢,很清楚。只是一件小事:请您告诉我 viewWillAppear 和 viewDidAppear 之间的区别吗?
      • 第一个在视图控制器的视图出现之前被调用。第二个在它出现后被调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2016-09-07
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      相关资源
      最近更新 更多