2017-10-04 7 views
0

再利用性を念頭に置いて設計するのに問題があります。私のアプリのある部分にはUITableViewControllerがあり、別の部分にはUITableViewがあります。これらはどちらも同じように見え、同じデータを使用します。だから私は別のUITableViewDelegateUITableViewDatasourceクラスを使い始めるべきだと思ったのです。テーブルビューの再利用を設計するには?

@interface RestaurantsViewController() 

@property (nonatomic, strong) RestaurantsTableSource *source; 

@end 

そして、これを使用してテーブルビューを設定します:

self.tableView.dataSource = self.source; 
self.tableView.delegate = self.source; 

をそして、いつでもデータの変更私は、このへの強い参照を持っていると思います私のUIViewController

@interface RestaurantsTableSource : NSObject <UITableViewDelegate, UITableViewDataSource> 

@property (nonatomic, strong) RLMResults *restaurants; 

@end 

、私はRestaurantsTableSourceに再割り当てします:

self.source.restaurants = [Database getRestaurants]; // Or something like it 
[self.tableView reloadData]; 

しかし、これがこのようなことを処理する最善の方法かどうかはわかりません。これについてあなたのテイク/フィードバックは何ですか?

答えて

0

私はこれらの行の後

self.tableView.dataSource = self.source; 
self.tableView.delegate = self.source; 

それらのラインまで、あなたに同意、私はデータを取得するデータソースを呼び出すことを好むだろう。

[self.source tableView:self.tableView loadPage:1]; 

とあなたのRestaurantsTableSourceクラスでこのパブリックメソッドを実装し、このような何か:

- (void) tableView:(UITableView *)tableView loadPage:(NSUInteger)page { 
    // Implement your server call or local call and finally reloadData 
    [tableView reloadData]; 
} 
関連する問題