1

CoreDataを理解するために構築しているシンプルなCoreDataアプリがあります。これには、気象観測所と特定の観測所の観測のコレクションの2つのエンティティがあります。

このための初期インターフェースを作成するには、ウィンドウにタブビューを配置し、最初のタブを選択して、気象観測所エンティティをそのビューにドラッグします。次に、2番目のタブを選択し、観測エンティティを2番目のタブにドラッグします。

次に、自分で3番目のタブを作成し、上部にポップアップを追加しました。このポップアップはStationArrayControllerにバインドされているため、追加したすべての気象観測所が表示されます。これはうまくいきます。

次に、テーブルビューを追加して、選択したステーションに関連付けられた観測を表示します。これもうまくいきます。ステーションが選択したステーションと一致するすべての観測値を検索する述語を作成するメソッドを使用してこれを実装し、3番目のタブのテーブルビューに関連付けられたObservationArrayControllerに述語をアタッチしました。(IBでこれを行う方法がわからなかったので、プログラムで行いました)。

バグは次のとおりです。以前に保存した気象観測所と観測値を含むファイルをロードすると、3番目のタブに移動すると、観測点の1つ選択されていても(つまり、ポップアップに表示されます)、すべての観測値が表示されます。そのステーションに関連付けられているものだけでなく、テーブルビューに表示されます。

これは、ポップアップを使用してステーションを手動で変更するまで、述語をObservationArrayControllerにアタッチするメソッドを呼び出さないために発生します。

だから私の問題と質問はこれです(このポイントに到達するのに非常に時間がかかりました!):タブビューがロードされたことを検出して、述語をアタッチするメソッドを強制的に実行して、次の初期リストを作成するにはどうすればよいですか?選択したステーションに一致する観測?

カスタムViewクラスを作成し、それを3番目のタブビュー用にサブクラス化して、このコードをawakeFromNibメソッドに配置しようとしましたが、これはプロセスの初期段階です(ロードプロセスのこの時点で「選択されたステーション」は-1です)。

どんな助けでも大歓迎です。ありがとうございました!!

エリザベス

4

1 に答える 1

1

ああ、私は自分の質問に答えただけです!

タブビューのデリゲートを MyDocument に設定し、そこに tabView:didSelectTabViewItem: を実装しました。MyDocument で 3 番目のタブ ビューを指す IBOutlet を作成し、このメソッドで 3 番目のタブが選択されているかどうかを確認し、選択されている場合はメソッドを呼び出して、述語を ObservationArrayController にアタッチしました。よく働く!

于 2009-11-20T23:09:25.667 に答える