NSTableViewDelegateクラスに、外部クラスからデータテーブルをリロードするメソッドがあります。
- (void)reloadTable {
NSLog(@"reload data %@", table);
[table reloadData];
}
外部クラスからこのメソッドを呼び出そうとすると、再ロードしようとしているテーブルはnullになります。
reload data (null)
別のクラスで次のコードを使用してこのメソッドを呼び出しています。
TableController *delegate = [[TableController alloc] init];
[delegate reloadTable];
これは、テーブルコントローラーの新しいインスタンスを初期化し、テーブルコントローラーのそのインスタンスでメソッドを呼び出しているためだと思います。したがって、私のreloadTable
方法ではself.table
、テーブルの代わりに使用します-これは同じ結果になります:
reload data (null)
.xibでは、dataSourceとdelegateがTableControllerクラスに設定されています。私はビューベースのテーブルビューを使用しており、バインディングは使用していないことに注意してください。私は何が欠けていますか?
編集:これらの回答から、このクラスは単なるデータソースであり、テーブルビューのデリゲートであるため、これらの問題が発生している可能性があります。TableViewのViewControllerである新しいクラスを作成する必要がありますか?存在するクラスは「Model」クラスであり、作成する新しいクラスはMVCの「Controller」クラスであると言うのは正しいでしょうか?
編集2:TableViewControllerクラスを作成し、「Panel.xib」のテーブルビューに「view」アウトレットを設定しました。テーブルをリロードする必要がある別のクラスでは、次のようにします。
TableViewController *tv = [[TableViewController alloc] initWithNibName:@"Panel" bundle:nil];
[tv.table reloadData];
エラーは生成されませんが、テーブルビューはリロードされません。