一次显示一定数量的行,点击按钮,显示更多

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 &lt; totalNumberOfRecords,如果少则increment numberOfRowsInSection by 1.

在 cellForRowAtIndexPath 中 检查if (indexPath.row &lt; totalNumberOfRecords -2 &amp;&amp; indexPath.row &lt; numberOfRowsInSection-1)

然后添加"LoadMore Cell" 否则不添加。

【讨论】:

我有类似的情况。我有 76 个对象的数组(大约)。在填充 tableview 时,table 一次只能显示 10 个单元格。首先 0-10 个对象,然后按下下一个按钮表应该显示 11-20 数据,然后是 21-30 等等......所以我怎么能这样做呢?你对此有什么想法吗?【参考方案2】:

所以我做了一些非常相似的事情。您有一个包含 70 个字符串(或字典)的数组要显示在表中。 'numberOfRowsInSection:' 应该使用初始设置为 20 的 ivar。

按下按钮时,将 ivar 增加 20(但不超过实际数据量!),重新加载表格,然后可以使用 tableView 方法将表格向上滚动到“新”单元格.

【讨论】:

以上是关于一次显示一定数量的行,点击按钮,显示更多的主要内容,如果未能解决你的问题,请参考以下文章

JQuery如何实现点击查看更多,显示更多内容

Web表格怎么点击【查看】按钮弹出Div显示更多内容?

用js实现点击按钮 显示div 然后两秒后消失 但是只能执行一次 怎么才能做到可以重复调用 求助

如何在页面加载时从表中加载一定数量的行,并且仅在用户加载它们时才加载更多行?

在按钮点击时为选定的行设置动画

根据 div 中的行数显示“阅读更多”按钮