【问题标题】:How can I completely reload a view so that viewDidLoad gets run again?如何完全重新加载视图以便 viewDidLoad 再次运行?
【发布时间】:2015-04-12 13:36:22
【问题描述】:

我想重新加载我的视图,以便 viewDidLoad 重做所有工作。我如何在 Swift 中做到这一点?

【问题讨论】:

  • 这样做有什么意义?将您希望在viewDidLoad 中运行的代码移动到其他地方,例如viewWillAppear,不是更容易吗?
  • 可能是。在这种情况下,如何让 viewWillAppear 再次运行?
  • 没有否决...但您的问题表明您在提出问题之前没有进行适当的研究。 viewDidLoad 是视图控制器生命周期的一部分,不应多次调用。也许您可以详细说明您的实际问题。
  • 我确实做过研究。我无法找到答案,所以我来到了这里。我想完全重新加载我的视图。问的太多了吗?
  • 您需要告诉我们,“重新加载您的视图”是什么意思,因为这在 iOS 上并不常见……

标签: ios swift uiview uiviewcontroller


【解决方案1】:

viewViewDidLoadviewWillAppear视图控制器生命周期 的一部分,在您的 UIViewController 被实例化之后且视图出现在屏幕上之前由 iOS 自动调用。您可以在视图控制器类中的任何位置调用它们,但这根本不是好的做法,我绝不建议您这样做!

如果您有想要在视图控制器的生命周期内多次执行的代码,请将其放入单独的方法中,并从 viewDidLoad 和代码中您需要它们的其他部分调用它们。

您可以在 Apple 的 documentation 中阅读有关视图控制器生命周期的更多信息。

【讨论】:

  • 我让它工作了。必须先清除我的 uicollectionview 数据源,然后调用从 viewDidLoad 中取出的单独方法。谢谢。
  • 如果在我的应用程序中我以编程方式创建 UI 而在视图控制器中我从 viewDidLoad 方法添加所有视图怎么办?在这种情况下,如果我创建通用方法,那么这些视图将被实例化并多次添加。所以为了避免这种情况,我将不得不删除每个视图,释放它并再次执行该方法。那么应该有更好的选择吗?
【解决方案2】:

您可以手动拨打ViewDidLoad,但不建议这样做。 最好的办法是把你所有的代码放在viewDidLoad 中的另一种方法中(比如loadData)。并在需要时再次调用此方法。

但这取决于你为什么需要它。通常ViewWillAppearViewDidAppear 是更好的选择。

【讨论】:

  • 如果在我的应用程序中我以编程方式创建 UI,在 viewController 中,我从 viewDidLoad 方法添加所有视图怎么办?在这种情况下,如果我创建通用方法,那么这些视图将被实例化并添加多次。所以为了避免这种情况,我将不得不删除每个视图,释放它并再次执行该方法。那么应该有更好的替代方案吗?
猜你喜欢
  • 2012-06-22
  • 2016-11-29
  • 2012-04-09
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 2020-07-04
相关资源
最近更新 更多