UITableView部分中的多个单元格类型

时间:2013-06-24 12:23:45

标签: ios objective-c arrays uitableview

我正在尝试汇总来自三个社交网络(Facebook,LinkedIn,Twitter)的数据。我有所有适当和正确的饲料,我也有不同的细胞类型。

我想问的问题是,如何制作一个UITableView,按顺序每个部分包含10个包含3个单元格(加上三种不同单元格类型)的部分

第1节:

[Feed数组的Facebook单元索引0]

[Feed数组的Twitter单元索引0]

[Feed数组的LinkedIn单元索引0]

第2节:

[Feed数组的Facebook单元索引1]

[Feed数组的Twitter单元索引1]

[Feed数组的LinkedIn单元索引1]

第3节: 等等等

3 个答案:

答案 0 :(得分:3)

 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
     return 3;

 }

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

 -(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
   static NSString * cellIdentifier = @"cellId";
    customCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

  if(indexPath.row == 0)
   {
        cell.textLabel.text = [FbFeed objectAtIndex:indexpath.section];

       // set FacebookCell
        cell


   }
  else if (indexPath.row == 1)
   {
    // set TwitterCell
    cell.textLabel.text = [tweetFeed objectAtIndex:indexpath.section];

   }
  else if (indexPath.row ==2)
  {
    cell.textLabel.text = [linkedinFeed objectAtIndex:indexpath.section];


    //set linkedin
  }

return cell;
}

答案 1 :(得分:3)

使用表格视图的数据源&代表。重要的是为3种类型的单元格使用3种不同的单元格标识符(除非您希望它们具有相同的外观)。

-numberOfSectionsInTableView: {
    return 10;
}

–tableView:numberOfRowsInSection: {
    return 3;
}

-tableView:cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    if (indexPath.row == 0) {
        UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"FacebookCell"];

        if (cell == nil) {
             // Init FB cell here
        }

        // Load FB feed data into the cell here
        return cell;
    }
    else if (indexPath.row == 1) {
        // Twitter Cell, remember to user a different cell identifier
    }
    else ...
}

答案 2 :(得分:3)

为了构建示例,这可以用于任何多类型单元格。您不必总是使用行号来决定类型。您可以在该行获取一个对象并决定要显示的类型。

此外,如果您使用的是故事板,只需在表格中添加另一个原型单元格,为其分配一个唯一标识符,然后进行设置以便您可以使用它。如果您需要不同的布局依赖于返回的数据,那么效果非常好。

-tableView:cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    //Check what cell type it is. In this example, its using the row as the factor. You could easily get the object and decide from an object what type to use.
    if (indexPath.row == 0) {
        UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Type1Cell"];

        return cell;
    }
    else if (indexPath.row == 1) {
        UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Type2Cell"];

        return cell;
    }
    else {
        UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Type3Cell"];

        return cell;
    }
}