我创建了一个带有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];
}
答案 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结束时执行,那么您可以添加逻辑来加载更多数据。