web-dev-qa-db-ja.com

API-viewDidLoad、viewWillAppearまたはviewDidAppearからデータをロードするためのより良い場所は何ですか?

ビューコントローラーのviewDidLoadメソッドでAPIを呼び出しているIOSアプリを作成しています。サーバーからのデータを同じビューコントローラーにリロードしたいと思います。方法はいくつありますか?このタスクを実行するには、最善の方法は何ですか??私を助けてください。

ありがとう!

11
Kirti

viewDidLoadメソッドは、UIViewControllerが最初にロードされたときに最初に呼び出され、ポップしてから再入力したときに呼び出されますviewDidLoadが呼び出されます。したがって、APIを1回だけロードする場合は、viewDidLoadがAPIを呼び出すのに最適な場所です。

viewWillAppearそのUIViewControllerを入力するたびに呼び出され、更新されたデータ(更新されたデータ)を取得するときにAPIをロードする場所です。

viewDidAppearviewWillAppearのように呼び出されますが、viewWillAppearよりも少し遅れて呼び出されるため、毎回APIを呼び出したい場合は、viewWillAppearメソッドが最適です。

viewDidAppearメソッドがviewWillAppearメソッドから遅れて呼び出され、APIをリクエストしているだけなので、APIの応答が遅くなる可能性があり、APIの応答に基づいてUIが変更されると、アプリケーションUIがスタックするため、APIを呼び出すのに最適な場所があります- viewDidLoadviewWillAppearメソッド。

30
JAY RAPARKA

viewDidLoadが1回呼び出されます。 navigation controllerを使用し、前後にou view controller this viewDidLoadメソッドが呼び出されることはありません。このViewControllerを再度作成するまで(つまり、[navContoller pushViewController])。 api dataが変更されない場合ライフサイクルこのView Controllerこれはより良い場所から- APIを呼び出す。ただし、api data頻繁に呼び出す [つまり、 back and Push.forth this view controller]次に、apiを呼び出さないでくださいここにあります。

viewWillAppear:View Controllerが表示される前。このメソッド内でapiを呼び出すと、データの読み込みが完了するまでUIがスタックされます。これは奇妙に見えます。viewControllerのビューをロードする前に、この「viewWillAppear」メソッドが呼び出されます。これが理由で、その名前は「viewWillAppear」です。つまり、このビューはしばらく後に(つまり、数マイクロ秒後に)読み込まれます。何が起こるか後にここでAPIを呼び出す場合は、分析してみましょう。たとえば、APIは10秒後に応答を返します。次に、UIが10秒間フリーズ/スタックし、この10秒後にビューが呼び出されるのがわかります。

viewDidAppear:ビューコントローラーの表示が終了した後、このメソッド内で読み込みAPIを呼び出す必要があります。

1
Jamil

ビューコントローラに移動するたびに[〜#〜] api [〜#〜]を呼び出す必要はありません。呼び出す必要があります。時間。

TableViewCellがあり、このセルが[〜#〜] api [〜#〜]そして新しいViewControllerを開きますあなたがそれを押すとき。

したがって、ここでは[〜#〜] api [〜#〜]を:に追加しません。

  1. viewWillAppear()
  2. viewDidAppear()

viewDidLoad()に一度追加しますが、リクエストの数をできるだけ少なくする必要があります。

このような例:ナビゲーションコントローラー:

fruits and cars will come from **API**

fruits and Carsが[〜#〜] api [〜#〜]から表示されるとします。

フルーツセルをクリックすると、viewControllerの下に移動します。

enter image description here

したがって、最初のView Controllerに戻りたい場合は、APIがすでに存在している間にリロードする必要がないことは明らかです。

この場合、viewDidLoad()を使用して[〜#〜] api [〜#〜]リクエスト

0

viewDidAppearは間違いなく使用したいものではなく、データの読み込み中にビューの応答を「一時停止」します。

通常、viewDidLoadは配置したいものです。

0
Zhihao Cui

同じViewControllerにとどまると、viewdidload、viewwillappear、viewdidappearの3つのメソッドは再度呼び出されません。したがって、同じView Controllerにとどまり、サーバーからデータを取得します。データを取得した後、reloadメソッドを呼び出す必要があります。この答えがお役に立てば幸いです。

0
Alice

ViewWillAppearはAPIからデータをロードするのに最適な場所だと思います。 viewDidLoadは、ビューがロードされているときに1回呼び出されますが、viewWillAppearは、親ビューまたは子ビューからロードされたときに呼び出されるためです。

0
Dhiman Ranjit