Я использую Cocoanetic 's pull-to-reload , но с изюминкой: я бы хотел, чтобы UITableView мог как бы подтягивать, чтобы загрузить больше данных.
Я настроил классы и сумел настроить все функции для поддержки этого.Что меня, в сущности, озадачило, так это то, где в моем коде было создано и добавлено дополнительное представление.
Сначала я попытался добавить его в viewDidLoad класса Cocoanetic (a UITableViewController
):
- (void)viewDidLoad
{
[super viewDidLoad];
refreshHeaderView = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.view.bounds.size.height, 320.0f, self.view.bounds.size.height)];
refreshFooterView = [[EGORefreshTableFooterView alloc] initWithFrame:CGRectMake(0.0f, 0.0f + self.tableView.contentSize.height, 320.0f, 20.0f)];
[self.tableView addSubview:refreshHeaderView];
[self.tableView addSubview:refreshFooterView];
self.tableView.showsVerticalScrollIndicator = YES;
}
Это не работает, так как self.tableView.contentSize.height
на данном этапе равен нулю, поскольку таблица еще не загрузила свои данные.
Не беспокойтесь, подумал я, и попытался добавить его в viewDidLoadиз подкласса UITableViewController, который я сделал:
- (void)viewDidLoad
{
[super viewDidLoad];
// stuff
self.model = [ListingModel listingModelWithURL:@"avalidurl" delegate:self];
refreshFooterView = [[EGORefreshTableFooterView alloc] initWithFrame:CGRectMake(0.0f, 0.0f + self.tableView.contentSize.height, 320.0f, 20.0f)];
[self.tableView addSubview:refreshFooterView];
}
Примечание. Сначала я установил модель, но это также не сработало по той же причине.Я предполагаю, что стол еще не был накрыт.В отчаянии я дал своему классу свойство BOOL
и метод addFooter
(BOOL
, чтобы убедиться, что он вызывается только один раз), вызываемый из tableView:cellForRowAtIndexPath:
, что, очевидно, далеко от правильного пути ™
Так что же, учитывая этот сценарий, будет правильным путем ™?