3

これは複数のビューで構成された 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] が無効であることを指定するように編集します。

4

0 に答える 0