我正在为我的视图实现一个表视图控制器。作为apple docs中的具体细节,我在表格中使用了UITableViewCellStyleSubtitle
作为我的单元格。
我需要的是一个单元格左侧包含一个小头像,粗体textLabel
和一个较小的detailTextLabel
。 textLabel
和detailTextLabel
都是多行,而不是一行。
我正在尝试使用link中的教程,但模拟器只显示textLabel
。
这是我的cellForRowAtIndexPath:
方法:
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [newsTitle objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont boldSystemFontOfSize:18];
cell.textLabel.numberOfLines = ceilf([[newsTitle objectAtIndex:indexPath.row] sizeWithFont:[UIFont boldSystemFontOfSize:18] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20);
cell.detailTextLabel.text = [newsDescription objectAtIndex:indexPath.row];
cell.detailTextLabel.font = [UIFont systemFontOfSize:14];
cell.detailTextLabel.numberOfLines = ceilf([[newsTitle objectAtIndex:indexPath.row] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap].height/20);
return cell;
}
以下是heightForRowAtIndexPath:
方法:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *titleString = [newsTitle objectAtIndex:indexPath.row];
NSString *detailString = [newsDescription objectAtIndex:indexPath.row];
CGSize titleSize = [titleString sizeWithFont:[UIFont boldSystemFontOfSize:18] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
CGSize detailSize = [detailString sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
return detailSize.height+titleSize.height;
}
注意:数组newsTitle
为textLabel
保留newsDescription
,textDetailLabel
的内容。它还没有包含头像。如果有人可以帮助我解决这个问题并且还将较小的头像添加到此表格视图单元格中,我将非常感激。
答案 0 :(得分:0)
您应该创建一个自定义UITableViewCell
子类,其中包含UIImageView
的属性,您可以使用UIImage
中所选的cellForRowAtIndexPath:
填充该属性。我建议将UIImageView
添加为contentView
的子视图,然后将单元格的缩进调整为UIImageView
的宽度加上一些填充。这样可以将单元格的整个内容向右移动,为图像腾出空间:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// make room for the icon
self.indentationLevel = 1;
self.indentationWidth = kIconWidth + kIconPadding;
_iconImageView = [[UIImageView alloc] initWithFrame:CGRectMake(kIconPadding, kIconPadding, kIconWidth, kIconWidth)];
[self.contentView addSubview:_iconImageView];
}
return self;
}