一次显示一定数量的行,点击按钮,显示更多
Posted
技术标签:
【中文标题】一次显示一定数量的行,点击按钮,显示更多【英文标题】:Display certain numbers of row at one time, click Button, display more 【发布时间】:2012-08-20 02:23:11 【问题描述】:我很纠结这个问题。我有一个 NSArray *list 包含来自 plist 文件的 70 个元素。现在我需要将它们填充到 UITableView。 我想要的是一次显示 20 个项目,然后单击第 21 个单元格以显示另外 20 个 ..然后按第 41 个单元格以显示另外 20 个项目...依此类推,直到所有 72 个单元格显示..
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
return 20;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
static NSString *addCellID = @"addMoreCell";
UITableViewCell *addCell = [tableView dequeueReusableCellWithIdentifier:addCellID];
if (indexPath.row == 0)
static NSString *CellIdentifier = @"labelCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
return cell;
else if (indexPath.row < 25)
NSDictionary *dic = [self.list objectAtIndex:indexPath.row];
cell.textLabel.text = [dic objectForKey:@"Title"];
cell.detailTextLabel.text = [dic objectForKey:@"Tips"];
return cell;
else
if (cell == nil)
addCell.textLabel.text = @"Load More...";
return cell;
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
if(indexPath.row == 20)
[self.tableView reloadData];
【问题讨论】:
查看 UITableView 部分 iphonesdkarticles.com/2009/01/… 【参考方案1】:取一个数组,你将在其中add 20 elements from plist
,然后
设置numberOfRowsInSection = [array count]
和
检查plist中是否有numberOfRowsInSection < totalNumberOfRecords
,如果少则increment numberOfRowsInSection by 1.
在 cellForRowAtIndexPath 中
检查if (indexPath.row < totalNumberOfRecords -2 && indexPath.row < numberOfRowsInSection-1)
然后添加"LoadMore Cell"
否则不添加。
【讨论】:
我有类似的情况。我有 76 个对象的数组(大约)。在填充 tableview 时,table 一次只能显示 10 个单元格。首先 0-10 个对象,然后按下下一个按钮表应该显示 11-20 数据,然后是 21-30 等等......所以我怎么能这样做呢?你对此有什么想法吗?【参考方案2】:所以我做了一些非常相似的事情。您有一个包含 70 个字符串(或字典)的数组要显示在表中。 'numberOfRowsInSection:' 应该使用初始设置为 20 的 ivar。
按下按钮时,将 ivar 增加 20(但不超过实际数据量!),重新加载表格,然后可以使用 tableView 方法将表格向上滚动到“新”单元格.
【讨论】:
以上是关于一次显示一定数量的行,点击按钮,显示更多的主要内容,如果未能解决你的问题,请参考以下文章
用js实现点击按钮 显示div 然后两秒后消失 但是只能执行一次 怎么才能做到可以重复调用 求助