从 API- viewDidLoad、viewWillAppear 或 viewDidAppear 加载数据的最佳位置是什么?

What is better place for loading data from API- viewDidLoad, viewWillAppear or viewDidAppear?

我正在制作一个 IOS 应用程序,我在视图控制器的 viewDidLoad 方法中调用 API。现在我想用来自服务器的数据重新加载同一个视图控制器。有多少种方法可以完成这项任务,什么是最好的方法?请帮助我。

谢谢!!

viewDidAppear 绝对不是您要使用的那个,它会 'pause' 在您加载数据时响应视图。

一般viewDidLoad就是你要放的那个。

viewDidLoad 被调用一次。如果您使用 navigation controller 并在 view controller 中来回执行此 viewDidLoad 方法将永远不会被调用.直到您再次创建此 ViewController(即 [navContoller pushViewController])。如果你的api数据永远不会改变这个视图控制器生命周期这个更好的地方 打电话给你的API。但是如果你的api数据需要经常调用[即返回 push.forth 这个视图控制器] 然后你 不应该在这里调用 api

viewWillAppear: 在视图控制器之前 shows.If 你叫你 api 在此方法中,您 UI 将堆叠直到数据加载完成。看起来 odd.before 加载视图 viewController 这个 "viewWillAppear" 方法被调用。这就是原因,它的名字是"viewWillAppear"。这意味着该视图将在一段时间后加载(即几微秒后)。如果你在这里调用你的 api 之后会发生什么,让我们分析一下。比如说,你的 api return 响应在 10 秒后。然后 UI 将 freeze/stuck 持续 10 秒,您将在这 10 秒后看到您的视图将被调用。

viewDidAppear: 完成一个视图控制器showing.So后,你需要在这个方法中调用你的加载API。

viewDidLoad 方法在第一次加载 UIViewController 时第一次被调用,当它弹出然后你重新进入它时 viewDidLoad 被调用。因此,如果您只想加载 API 一次,那么 viewDidLoad 是调用 API.

的最佳位置

viewWillAppear 每次输入 UIViewController 时调用,它是您想要加载 API 的地方refreshed data(更新数据).

viewDidAppear 也叫 viewWillAppear 但比 viewWillAppear 晚了一点所以如果你想叫 API每次比最好的地方是viewWillAppear方法。

因为 viewDidAppear 方法从 viewWillAppear 方法调用晚了,而你只是在请求 API 所以 API 的响应可能会晚,如果你的 UI 根据 API 响应进行更改,然后它将卡住应用程序 UI 因此有一个最好的地方可以调用 API viewDidLoad & viewWillAppear 方法。

如果我们留在同一个ViewController,viewdidload、viewwillappear、viewdidappear这三个方法将不会被调用again.So我们留在同一个视图控制器,我们从服务器获取数据,我们获取数据后应该调用reload方法。 希望这个回答能帮到你。

我认为 viewWillAppear 是从 API 加载数据的最佳位置。因为 viewDidLoad 在加载视图时调用一次,而 viewWillAppear 会在从其父视图或子视图加载时调用。

你不需要每次导航到视图控制器时都调用API,你需要调用一次。

如果您有一个带有 CellTableView,并且此单元格来自 API 并会在您按下时打开新的 ViewController

所以这里你不会在 :

中添加你的 API
  1. viewWillAppear()
  2. viewDidAppear()

您将在 viewDidLoad() 中添加一次,而我们需要尽可能减少请求数量。

这样的例子:导航控制器:

假设水果和汽车将从 API.

开始

当您点击水果单元格时,您将导航至下方 viewController:

所以当你想回到第一个视图控制器时,显然你不需要重新加载api 它已经存在

在这种情况下我们使用viewDidLoad()来处理API请求