aの2つの異なるタブに配置されNSTabView
、それぞれが3番目のコントローラー(Controller2)から異なるコントローラー(Controller1とController3)によって制御される2つのテーブルのコンテンツを更新する際に問題が発生します。私は3つの異なるアプローチを試しました:
アプローチ#1:Controller1(テーブルのコントローラーinvitesTableView
)でメソッドrefreshTableを作成しました:
- (void)refreshTable {
invites = //fill my mutable array
NSLog(@"%@",invites);
[self.invitesTableView reloadData];
NSLog(@"invite's table view updated");
}
後でController2から呼び出します。
Controller1 *controller1 = [[Controller1 alloc] init];
[controller1 refreshTable];
NSLog
配列招待の内容を正しく出力しますが、テーブルは更新されません。アプリケーションの起動時に、Controller1でまったく同じメソッドを呼び出し、配列の招待の内容がテーブルに正しくロードされていると言う必要があります。
アプローチ#2:Controller2にいるとき、私は次のことを行います。
Controller1 *controller1 = [[Controller1 alloc] init];
controller1.invites = //fill my mutable array
NSLog(@"%@",controller1.invites);
[controller1.invitesTableView reloadData];
NSLog
ただし、が正しい内容を示していても、テーブルの内容は更新されません。
アプローチ#3:Controller1がの内容を制御するのでNSTabViewItem
、私はController1に次の方法を統合しました。
- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)inviteTab
refreshTable
Controller1によって制御されるタブを開くとすぐにメソッドを呼び出すため、問題なく動作します。問題は、異なるタブに異なるテーブルがありますが、のデリゲートとして設定できるコントローラーは1つだけであるNSTabView
ため、別のテーブルでController3によって制御されるテーブルを更新できないことです。Controller1とController3をマージする以外に、#3にアプローチする簡単な解決策はないと思いますが、最初の2つのアプローチに関して何かが欠けていると思います。
私が自分自身をはっきりと説明したことを願っています。誰か助けてもらえますか?前もって感謝します!