我是ios编程的新手,如果问题很简单,请耐心等待。我有一个映射到表视图控制器的核心数据表。目前的数据如下所示 - 有一个原型单元:
我需要按日期汇总数据,并在不同的部分显示每个日期的详细信息,总计的总数将作为第一行。类似的东西:
我的问题是这可行吗?我想我需要在每个表格单元格中创建节和两个原型单元格。希望快速反馈。
全部谢谢!
答案 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时节省了大量时间。