如何在超过25条记录上制作UITableView滚动节目?

时间:2016-03-17 10:45:27

标签: objective-c uitableview

我创建了一个带有UITableView.UITableView的iOS应用,默认情况下加载了25条记录。我正在滚动tableview以获得另外25条记录。

如何获取另一组数据?

这是我的代码。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return timeList.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Item";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell=[[UITableViewCell alloc]initWithStyle:
              UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    NSDictionary *tmpDict = [timeList objectAtIndex:indexPath.row];
    NSMutableString *text;
     NSString *currentstatus;
    text = [NSMutableString stringWithFormat:@"%@",[tmpDict objectForKeyedSubscript:startdate]];
    currentstatus = [self statusString:[NSMutableString stringWithFormat:@"%@",[tmpDict objectForKeyedSubscript:status]]];
    NSMutableString *detail;
    detail = [NSMutableString stringWithFormat:@"User:%@ , Hours:%@ , Status: %@ ",
              [tmpDict objectForKey:username], [tmpDict objectForKey:hours], currentstatus];
    cell.textLabel.text = text;
    cell.detailTextLabel.text= detail;
     cell.accessoryType =UITableViewCellAccessoryDisclosureIndicator;
    return cell;
}
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSDictionary *tmpDict = [timeList objectAtIndex:indexPath.row];
   NSString * storyboardName=@"Main";
    UIStoryboard *storyboard =[UIStoryboard storyboardWithName:storyboardName bundle:nil];
    EditViewController *evc =[storyboard instantiateViewControllerWithIdentifier:@"EditViewController"];
       evc.startday =[NSMutableString stringWithFormat:@"%@",[tmpDict objectForKeyedSubscript:startdate]];
    evc.user_id = [NSMutableString stringWithFormat:@"%@",[tmpDict objectForKeyedSubscript:user_id]];
    evc.tab =@"wktime";
    [self presentViewController:evc animated:NO completion:Nil];
} 

3 个答案:

答案 0 :(得分:4)

首先,您要检查tableview是否到达最后一个单元格。如果达到,那么你必须重新加载下一组数据。

使用以下代码检查tableview是否到达最后一个单元格。

-(void)tableView:(UITableView *)tableView willDisplayCell (UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == timeList.count-1)
    {
        //Your code here
    }
}

答案 1 :(得分:1)

您可以使用UISCrollView scrollViewDidEndScrolling的委托方法加载更多数据,然后您可以刷新tableView。

答案 2 :(得分:1)

您可以通过简单的方式完成此操作。通过在cellForRowAtIndexPath委托方法中添加以下代码。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  if (indexPath.row ==  timeList.count-1) {
     NSLog(@"load more");
   }
  .....
  return cell;
 }

如果条件将在tableview结束时执行,那么您可以添加逻辑来加载更多数据。