PFQueryTableViewController两个部分有两个dataSource

时间:2014-06-17 10:03:36

标签: ios objective-c uitableview parse-platform pfquery

我希望PFQueryTableViewController有两个部分:

  • 第1部分:显示PFObjects查询(地址簿中使用该应用的联系人)
  • 第2部分:显示数组的对象(地址簿中所有联系人的列表)

目前我正在设置部分数量:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}

设置每个部分的行数:

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 1)
    {
        return [self.contacts count];
    }
    else
    {
        return [self.objects count];
    }
    return 1;
}

当我尝试显示单元格的内容时,我在滚动时遇到崩溃:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {
    static NSString *CellIdentifier = @"Cell";
    PFTableViewCell *cell = (PFTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[PFTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    }

    if (indexPath.section == 0)
    {
    UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    name.text = object[@"username"];
    [cell addSubview:name];
    }
    else
    {
        UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
        name.text = [self.contacts objectAtIndex:indexPath.row];
        [cell addSubview:name];
        NSLog(@"%@", [self.contacts objectAtIndex:20]);
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

我收到错误:[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]原因必须是因为PFObject被查询第1和第2部分的每一行而且因为我在第2部分有更多的对象,它会自动超出界限滚动时崩溃。

dataSource中显示两个PFQueryTableViewController的两个部分的最佳方式是什么?我是否必须在PFQueryTableViewController内嵌入UITableViewController

1 个答案:

答案 0 :(得分:1)

我不认为PFQueryTableViewController会在这里为你提供良好的服务。使用常规UITableViewController可能会更好,并且有两个组合并显示在表中的查询。 PFQTVC旨在与一个数据源一起使用。