0

誰かが私を助けることができますか??

わかりました.....私のプロジェクトは順調に進んでいます。画面/データの更新に関する小さな問題が発生しました。

標準の 5 タブ TabBarController が正常に動作しています。私のタブの 1 つは、テキスト フィールドから Core Data のエンティティ属性にデータを入力します。これまでのところ、すべて問題ありません。

別のタブに切り替えると、属性がデータベースから読み取られ、ピッカーに入力されます。

コードは正常に動作しますが、問題は読み取りが行われるときです。

タブ 3 にデータを入力して書き込みを行った後、タブ 1 に切り替えましたが、ピッカーは更新されていません。タブ1のピッカーにデータが表示されたら、シミュレーターを停止して再度実行するまではありません。

現時点では、データベースの属性を読み取り、viewDidLoad メソッドでピッカー配列を更新するためのコードがあります。

タブが切り替わり、ピッカーが表示される直前に、保存したデータを読み取ることができるように、この前に起動する別の方法はありますか?

また、データベース取得コードを viewWillAppear メソッドに入れてみましたが、ビューが表示される前に起動し、データを読み取り、ピッカー配列を更新してから表示しますが、そうではありません!!!

私が言ったように、データは正常に書き込まれ、取得されています....シミュレーターを停止して開始し、ピッカーを埋める必要があるだけです。

何かご意見は?

乾杯、

ガズ。

イギリスのブリストル。

4

4 に答える 4

0

viewWillAppear:(またはviewDidAppear:)は、おそらくこの種の動作の正しい場所です。その場合に期待した動作が表示されない理由を調査して説明してください。

viewDidLoadビューコントローラのビューが構築される(組み込みloadViewまたはnibファイルから「ロード」される)ときに呼び出されます。viewDidLoadビューを表示する前にロードする必要があるため、ビューが最初に表示される前に呼び出されることを期待できますが、表示されるたびに呼び出されるわけではありません。ビューがすでにロードされている場合は、再度ロードする必要はありません。ただし、ビューが表示されていないときにアプリケーションがメモリ警告を受信した場合、アプリケーションはアンロードされ、再表示が必要な場合は再度ロードされます。したがってviewDidLoad、コントローラーの存続期間中に何度も呼び出される可能性がありますが、ビューが表示されるときに呼び出されることに依存することはできません。これがviewWillAppear/のviewDidAppear目的です。

于 2012-05-15T00:00:50.340 に答える
0

……わかりました……そしてこの質問の最新情報です!

viewWillAppear メソッドで使用したピッカーを更新する方法は、

[self.projectPicker reloadAllComponents];

(ここで、projectPicker はピッカーの名前です。

ピッカー配列を更新した後、必ず viewWillAppear メソッドの最後に配置してください!

ガズ。

于 2012-05-16T20:50:46.527 に答える
0

viewWillAppear メソッドは、ビューが表示されるたびに呼び出されます。これがデータを取得する正しい場所です。

于 2012-05-15T06:30:45.503 に答える
0

.....検索エンジンを使用して自分の問題に関連するスレッドを見つける他の初心者の精神で、私はこの最終エントリを投稿して、将来これを見つける可能性のある人を助けると思いました!!!

みんなのアドバイスに従った後、ブレークポイントを配置し、コードを 1 行ずつ実行して、どのコードがいつ実行されているかを確認しました。

ピッカーが呼び出す重要なメソッドは、アプリの起動時にのみ起動されていることがわかりました。タブを切り替えると、データがピッカー データ配列に入力されているにもかかわらず、ピッカーがリロードされませんでした。

この後、「ピッカービューデータのリロード」を検索して検索を絞り込んだので、皮肉な感覚があります。

最初の検索で、仲間のフォーラム メンバーが同じ問題を抱えていた、ここの古いスレッドに戻ってきました。

非常に小さな 1 行のコードで側転ができました!!!

私は彼のアドバイスに従い、次の行を配置しました.....self.picker.delegate=self; viewWillAppear メソッドで......すべてがタブ スイッチ間で更新されるようになりました!!

この行がすべての違いを生む理由を説明するために、ここにいるグルの 1 人にお辞儀をしなければならないかもしれません。

(ピッカーを自分のピッカー名に置き換えました)

このステートメントが初心者が理解できる言葉でピッカーを更新した理由を誰かが説明できますか??...私は本当に感謝します.....

ガズ。

于 2012-05-15T21:33:06.647 に答える