我希望在tableview上的每一行都有两个数据。 类似于最近通话(左侧是名称,右侧是当天)
这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
//cell.selectionStyle = UITableViewCellStyleValue1 ;
}
// Configure the cell.
NSDictionary *dictionary = [listaOggetti objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"Elementi"];
NSString *cellValue = [array objectAtIndex:indexPath.row];
NSArray *array1 = [dictionary objectForKey:@"Tipo"];
NSString *cellDetail = [array1 objectAtIndex:indexPath.row];
if ([indexPath row] == 0){
cell.textLabel.text = cellValue;
cell.textAlignment = UITextAlignmentCenter;
cell.backgroundColor = [UIColor blueColor];
cell.font = [UIFont systemFontOfSize:13];
} else {
cell.textLabel.text = cellDetail;
cell.detailTextLabel.text = cellValue;
}
return cell;
}
我试图在
上使用不同的风格initWithStyle
没有任何结果(仅在右侧显示我的详细文字)。 在NSLOG中,我看到了cellDetail的正确值。
{
Elementi = (
"Chiamate e Videochiamate Nazionali",
"08m:43s",
"1h:31m:17s",
"1h:40m:00s"
);
},
{
Tipo = (
Effettuato,
Rimanente,
Totale
);
},
{
Elementi = (
"SMS e MMS Nazionali",
21,
29,
50
);
},
{
Tipo = (
Effettuato,
Rimanente,
Totale
);
},
{
Elementi = (
"Traffico Dati FMM",
"69.95 MB",
"954.05 MB",
"1024.00 MB"
);
},
{
Tipo = (
Effettuato,
Rimanente,
Totale
);
},
{
Elementi = (
Skype,
"00m:00s",
"3h:20m:00s",
"3h:20m:00s"
);
},
{
Tipo = (
Effettuato,
Rimanente,
Totale
);
},
{
Elementi = (
"WWW3, Yahoo!, Google, eBay e altri servizi",
"0.00 MB",
"100.00 MB",
"100.00 MB"
);
},
{
Tipo = (
Effettuato,
Rimanente,
Totale
);
}
)
我的目标是获得这样的细胞:
答案 0 :(得分:1)
我相信您需要像这样初始化单元格,在初始化单元格时使用的样式不正确
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier] autorelease];
答案 1 :(得分:1)
我会考虑creating a custom Cell,它很容易做到,如果做得好,它看起来真的很棒。
否则,您的代码看起来没问题,请检查您的标签是否已分配(不是零)。
在旁注中,您的数据集中有多少项?我只问,因为如果它只有1,你就永远不会设置detailTextLabel。
答案 2 :(得分:0)
感谢所有人,我的代码没问题,故障发生在第二个阵列上。 以这种方式解决:
NSDictionary *dictionary1 = [listaDettaglioOggetti objectAtIndex:indexPath.section];
NSArray *array1 = [dictionary1 objectForKey:@"Tipo"];
NSString *cellDetail = [array1 objectAtIndex:indexPath.row];
最后一个问题:
我会修改每个部分的第一行(修改字体大小,颜色,对齐)。 我认为这样的事情:
NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
if (sectionRows == 0){
cell.textLabel.text = cellDetail;
cell.detailTextLabel.textAlignment = UITextAlignmentCenter;
cell.detailTextLabel.backgroundColor = [UIColor blueColor];
cell.detailTextLabel.font = [UIFont systemFontOfSize:13];
} else {
cell.textLabel.text = cellDetail;
cell.detailTextLabel.text = cellValue;
}
但这并不能产生魔力:D 如果最好打开另一个话题,请告诉我们,或者我们可以继续这里。