带有动态部分和两个不同原型单元的ios表

时间:2013-07-08 17:26:20

标签: ios uitableview sections

我是ios编程的新手,如果问题很简单,请耐心等待。我有一个映射到表视图控制器的核心数据表。目前的数据如下所示 - 有一个原型单元: simple table with no sections

我需要按日期汇总数据,并在不同的部分显示每个日期的详细信息,总计的总数将作为第一行。类似的东西:

sectioned table with two prototype cells

我的问题是这可行吗?我想我需要在每个表格单元格中创建节和两个原型单元格。希望快速反馈。

全部谢谢!

3 个答案:

答案 0 :(得分:4)

执行此操作的简单方法是使用节标题。您可以使用单个字符串(@"%@: %@", date, total)或包含左侧标签的包装视图作为日期,也可以使用右侧的标签。

-(NSString *) tableView:(UITableView *)tv titleForHeaderInSection:(NSInteger)s 
{
    NSString *dateString = [self dateStringForSection:s];
    float total = [self totalForSection:s];
    return [NSString stringWithFormat:@"%@: %0.2f", dateString, total];
}

或者

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    return [self wrappedHeaderForSection:s];
}

当然,您必须适当地实施dateStringForSection:wrappedHeaderForSection:

答案 1 :(得分:3)

最简单的方法是将UITableView设置为'UITableViewStyleGrouped'。

  

UITableView * tab = [[UITableView alloc] initWithFrame:rect style:UITableViewStyleGrouped];

或者您可以转到界面构建器并在表格视图中将样式从普通变为分组。

“Grouped”风格将您的表格划分为多个部分。

使用UITableViewDelegate方法指定所有参数。

  

//告诉表

中的部分编号      

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  {

return numberOfSections; 
     

}

     

//告诉每个部分的行数

     

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

     

{

    if (section == 0)
    {
         return 2;
    } else if(section == 1)...
     

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  if (indexPath.section == 0 && indexPath.row == 0)
  {
         //Show Amount for Jul 02, 2013
         cell.textLabel.text = @"Jul 02, 2013";
         cell.detailTextLabel = @"20.35";
  }
  // Do the same for all rows and section in table.
     

}

供进一步参考 - http://mobisoftinfotech.com/iphone-uitableview-tutorial-grouped-table/

答案 2 :(得分:1)

您还应该查看Sensible TableView框架。使用Core Data时节省了大量时间。