在tableview中加载更多行

时间:2012-02-08 16:47:27

标签: iphone objective-c

我最初需要加载15条记录,然后当用户点击显示单元格的更多行时,我需要在我的tableview中加载接下来的20条或可用记录。我正在查看SO中发布的这个问题。

此功能也可以在appStore中看到。在哪里加载下一个记录数。

这里的解决方案是;

`- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.numberOfRowsVisible;
}

-(void)moreButtonClickAction {
    if (self.numberOfRowsVisible < self.maxNumberOfRows) 
        self.numberOfRowsVisible = MIN(self.numberOfRowsVisible + 10, self.maxRows);
    [self.tableView reloadData];
}

我初始化并将viewDidLoad中numberOfRowsVisible的值硬编码为15。

self.numberOfRowsVisible=[NSNumber numberWithInt:15];
<{1>}中的

- 我不确定这是否正确。

numberOfRowsInSection
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return MIN([self.arrayRecords count], 15); }

中的

moreButtonClickAction

这是我编辑我的代码以适应SO中留下的上述建议的方式。但这不起作用。 -(void)moreButtonClickAction { if (self.numberOfRowsVisible < [self.arrayRecords count]) self.numberOfRowsVisible = MIN(self.numberOfRowsVisible + 15, [self.arrayRecords count]); [self.tableView reloadData]; } 似乎存在一些问题。我此刻不在MAC,所以我不记得我得到的确切警告/错误。所以有人可以帮助我。

3 个答案:

答案 0 :(得分:1)

如果要显示所有可能的条目,则必须使用MAX而不是MIN。

答案 1 :(得分:1)

numberOfRowsInSection应该返回一个整数。 self.numberOfRowsVisible不是整数。

viewDidLoad中:

self.numberOfRowsVisible=15;

主要实施:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.numberOfRowsVisible;
}

-(void)moreButtonClickAction {
    if (self.numberOfRowsVisible < [self.arrayRecords count]) {
        self.numberOfRowsVisible += 15;
        if (self.numberOfRowsVisible > [self.arrayRecords count]) {
            self.numberOfRowsVisible = [self.arrayRecords count];
        }
    }
    [self.tableView reloadData];
}

脱离我的头脑,代码可以用重新分解。

答案 2 :(得分:1)

1)不要使用NSNumber对象,普通整数会这样做。 2)为什么不只有一个整数变量来显示你想要显示的当前行数,并用15初始化,并将其保存在类实例中。 3)你甚至不必使用MIN:

return [self.arrayRecords count] < self.numberOfRowsVisible ? [self.arrayRecords count] : self.numberOfRowsVisible;