如何设计tableview重用?

时间:2017-10-04 13:47:47

标签: ios objective-c uitableview

我在设计可重用性方面遇到了一些麻烦。在我的应用的一部分中,我有一个UITableViewController,另一部分我有一个UITableView。这两个看起来应该相同,并且它们使用相同的数据。这就是为什么我认为我应该开始使用单独的UITableViewDelegateUITableViewDatasource类。

@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];

但是,我不知道这是否是处理此类事情的最佳方法。您对此有何看法/反馈?

1 个答案:

答案 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];
}