これは複数のビューで構成された Core Data アプリで、それぞれが独自の Xib に含まれています。アプリ全体で、さまざまな Core Data エンティティからのデータを表示するいくつかの NSPopupButton があり、バインディングはインターフェイス ビルダーで従来の方法で行われ、すべてうまく機能します。
ポップアップに表示する前にデータを処理する必要があるため、バインドの代わりにプログラムで入力する必要があった 2 つのポップアップ ボタンを除きます。1 つは、@distinctUNionOfObjects を使用する必要があるエンティティに関連しています。もう 1 つは、パーセンテージ (パーセント記号付き) として表示されるように、カスタマイズされた数値書式設定を行う必要がある 10 進数のエンティティに関連しています。
これら 2 つのポップアップを設定するために、関連するビューのデータの配列を awakeFromNib に生成しました。コードは次のとおりです。
- (id)init {
self = [super initWithNibName:@"xib_name" bundle:nil];
if (!self) {
return nil;
}
[self setTitle:@"view_title"];
return self;
}
- (void)awakeFromNib {
// fetch request on entity
// data treatment and creation of an array with the result
[popupButton addItemsWithTitles:array];
}
結構ですが、(アプリの他のビューのテーブルまたはテキスト フィールドを介して) ポップアップをフィードするこれらのエンティティにデータを追加してから、ポップアップを使用してビューに戻ると、ボタンは新しいコンテンツで更新されません。コンテンツが awakeFromNib で作成されており、関連するビューを再度表示しても Nib が再起動されないためです。しかし、ソース エンティティが変更されたとき、または新しいデータを受信したときに、これらのポップアップ ボタンを自動的に更新するにはどうすればよいでしょうか? アプリを再起動した後にのみ変更が表示されます。
それとも、私が何かを見逃したのかもしれませんが、そもそもインターフェースビルダーのバインディングを介してすべてを行うことができますか?
アドバイスありがとう。
=== [controller rearrangeObjects] が無効であることを指定するように編集します。