我正在尝试在tableView上实现“加载更多...”。我已经完成了,但我不知道它是否有效。 问题是我有自定义单元格,如果我喜欢这个:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
ArticlesCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ArticlesCell" owner:self options:NULL];
cell = (ArticlesCell *) [nib objectAtIndex:0];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
tableView.backgroundColor = cell.backgroundColor;
if (indexPath.row <= (self.bookmarks.count - 1)) {
[self configureCell:cell atIndexPath:indexPath];
}else{
cell.textLabel.text = @"Load more...";
}
return cell;
}
它的效果很好,但是它会重复使用单元格,如果我滚动,每五个单元格(这是高度77.0)将有标签“加载更多...”,但实际上正常工作。 我找到了这个解决方法,但我不知道它是否好又有效。
这是:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
if (indexPath.row <= (self.bookmarks.count - 1)) {
ArticlesCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ArticlesCell" owner:self options:NULL];
cell = (ArticlesCell *) [nib objectAtIndex:0];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
tableView.backgroundColor = cell.backgroundColor;
[self configureCell:cell atIndexPath:indexPath];
return cell;
}else{
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.textLabel.text = @"Load more...";
return cell;
}
}
正如你所看到的,我正在将“加载更多......”单元格变成一个简单的UITableViewCell,而不是重用它,因为它只是一个。这是好方法吗?你能用更好的东西给我建议吗? 谢谢!
答案 0 :(得分:1)
另一种方法是使用2个不同的小区标识符,一个用于识别和重用(一旦最初创建)一个ArticlesCell,另一个用于识别和重用(一旦最初创建)“加载更多......”UITableViewCell。至少那时你只会创建一次“加载更多......”UITableViewCell,而不是每次滚动到视图中。
static NSString *ArticleCellIdentifier = @"ArticleCell";
static NSString *LoadMoreCellIdentifier = @"LoadMoreCell";
LazyTableImages Apple iOS示例项目使用类似的方法(请参阅Classes / RootViewController.m)。
答案 1 :(得分:0)
当您点击加载更多按钮时,然后增加行数并重新加载tableview。即在方法numberofrowsinsection。让我知道你是否还需要