我在设计可重用性方面遇到了一些麻烦。在我的应用的一部分中,我有一个UITableViewController
,另一部分我有一个UITableView
。这两个看起来应该相同,并且它们使用相同的数据。这就是为什么我认为我应该开始使用单独的UITableViewDelegate
和UITableViewDatasource
类。
@interface RestaurantsTableSource : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) RLMResults *restaurants;
@end
在我的UIViewController
中,我会强烈提及这一点:
@interface RestaurantsViewController ()
@property (nonatomic, strong) RestaurantsTableSource *source;
@end
并设置tableview使用它:
self.tableView.dataSource = self.source;
self.tableView.delegate = self.source;
然后,每当数据发生变化时,我都会将其重新分配给RestaurantsTableSource
:
self.source.restaurants = [Database getRestaurants]; // Or something like it
[self.tableView reloadData];
但是,我不知道这是否是处理此类事情的最佳方法。您对此有何看法/反馈?
答案 0 :(得分: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];
}