从API的viewDidLoad,viewWillAppear或viewDidAppear加载数据是更好的地方?
我正在做一个IOS应用程序,我在视图控制器的viewDidLoad方法调用一个API。 现在我想重新加载相同的视图控制器来自服务器的数据。 有多less方法可以做这个任务,最好的方法是什么? 请帮帮我。
谢谢!!
第一次调用viewDidLoad
方法时,第一次加载UIViewController
,当它popup,然后你重新进入它的时候viewDidLoad
被调用。 所以,如果你只想加载一次API,那么viewDidLoad
是调用API的最佳地方。
viewWillAppear
每当你进入UIViewController
时调用,当你想要刷新数据(更新后的数据)的时候就是加载API的地方。
viewDidAppear
也称为viewWillAppear
但比viewWillAppear
调用的时间稍晚,所以如果你想调用API,每次最好的地方都是viewWillAppear
方法。
因为从viewWillAppear
方法调用的viewDidAppear
方法晚了,你只是请求API,所以API的响应可能会延迟,如果你的UI基于API响应改变,那么它将卡住应用程序UI,所以有一个最好的地方来调用API viewDidLoad
& viewWillAppear
方法。
viewDidAppear
绝对不是你想要使用的,它会暂停视图的响应,而你正在加载数据。
通常viewDidLoad
是你想要放置它的人。
如果我们留在同一个ViewController中,那么三个方法viewdidload,viewwillappear,viewdidappear都不会再被调用。所以我们留在同一个视图控制器中,我们从服务器获取数据,得到数据后我们应该调用reload方法。 希望这个答案可以帮助你。
我认为viewWillAppear是从API加载数据的最佳地点。 因为viewDidLoad在视图加载时调用一次,而viewWillAppear在从父视图或子视图加载时调用。
viewDidLoad被调用一次。 如果您使用导航控制器并来回查看控制器,则不会调用此viewDidLoad方法。 直到你再次创build这个ViewController(即[navContoller pushViewController])。 如果你的api数据永远不会改变这个视图控制器的生命周期 ,那么这是调用你的API的好地方 。 但是,如果你的api数据需要经常调用 [即返回和push.forth这个视图控制器],那么你不应该在这里调用API 。
viewWillAppear :在视图控制器显示之前。如果你在这个方法里面调用你的API,你的UI将堆栈直到数据加载完成。 这看起来奇怪。在加载viewController的视图这个“viewWillAppear”方法被调用。 这是原因,它的名字是“viewWillAppear”。 这意味着这个观点会稍后加载(即稍后一秒钟)。 如果你在这里调用你的API后会发生什么让我们分析。 说,你的API在10秒后回复。 然后用户界面会冻结/卡住10秒,在这10秒后你会看到你的视图被调用。
viewDidAppear :在完成视图控制器显示之后。因此,您需要在此方法内调用您的加载API。