Как перезагрузить данные в классе, который реализует протокол UITableViewDataSource

У меня есть класс, который реализует протокол UITableViewDelegate, и есть другой класс, который обрабатывает данные, т.е. он реализует протокол UITableViewDataSource.

@interface TableViewClass : UITableViewController <UITableViewDelegate>

@interface TableDataSource : NSObject <UITableViewDataSource>

и я устанавливаю TableViewClass в качестве делегата и TableDataSource в качестве источника данных

id datasource = [[TableDataSource alloc] init]
[self.tableView setDelegate:self];
[self.tableView setDataSource:dataSource];

Я извлекаю данные из асинхронного вызова сервера в методе init класса TableDataSource, который заполняет массив и определяет количество строк / разделов в таблице.

Но прежде чем вызов вернет некоторый результат, numberOfSectionsInTableView а также numberOfRowsInSection выполняются в результате 0 строк и 0 разделов, следовательно, пустая таблица.

Я думал поставить [self.tableView reloadData] в callBack, но у меня нет доступа к tableView в классе источника данных. Кто-нибудь может подсказать мне, как перезагрузить данные в tableView через класс источника данных, как мне может понадобиться позже, чтобы обновить данные тоже. Спасибо

1 ответ

Решение

Чтобы быстро решить эту проблему, вы можете добавить @property в TableDataSource для UITableView.

// TableDataSource.h
@interface TableDataSource : NSObject <UITableViewDataSource>{
    UITableView *tableView;
}

@property(retain)UITableView *tableView;

@end

// TableDataSource.m
@implementation TableDataSource
@synthesize tableView;

- (void)dealloc{
    self.tableView = nil;
}

@end

Теперь установите свойство при создании источника данных:

// UITableViewController.m
TableDataSource* datasource = [[TableDataSource alloc] init]
[datasource setTableView:self.tableView]
[self.tableView setDelegate:self];
[self.tableView setDataSource:dataSource];

Когда вам нужно перезагрузить данные из источника данных, теперь вы можете сделать:

[self.tableView reloadData];
Другие вопросы по тегам