向UITableViewCellStyleSubtitle添加第二个字幕行

时间:2012-12-11 15:48:32

标签: objective-c cocoa-touch uitableview

我已经使用init创建了一个自定义类:

if(self = [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier]) {
}

因为我想在单元格的右侧添加一个蓝色的发短信标签,并在选择时向右移动,否则在突出显示时看起来很奇怪:

self.sizeTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.contentView.frame.size.width-110, 0.0, 100.0, 44.0)];
self.sizeTextLabel.textAlignment = NSTextAlignmentRight;
self.sizeTextLabel.backgroundColor = [UIColor whiteColor];
self.sizeTextLabel.textColor = [UIColor colorWithRed:81/255.0 green:102/255.0 blue:145/255.0 alpha:1.0];
self.sizeTextLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleHeight;
[self.contentView addSubview:self.sizeTextLabel];

可能有更好的方法来做到这一点^

我想要做的是添加另一个实际上是另一个字幕行的标签,然后在使用heightForRowAtIndexpath方法创建单元格时增加行的高度。

问题:当我向内容视图添加新标签'row'时,它不会变高(默认视图会移到视图的中间)。如何在字幕视图下正确创建和定位?如果我要将第一个字幕改为多行,那么如果第二个标签知道该做什么就不错了。

我希望可可有相对的定位。或者我还没有找到它!

2 个答案:

答案 0 :(得分:2)

您可以将详细文本标签设为多行,并将两个字符串添加到一个标签中。在这个例子中,我的数据在其字典中有三个键,主标签文本有“main”,两个字幕字符串有“detail1和”detail2“。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    NSDictionary *object = _objects[indexPath.row];
    cell.textLabel.text = object[@"main"];
    NSString *concat = [NSString stringWithFormat:@"%@\n%@",object[@"detail1"],object[@"detail2"]];
    cell.detailTextLabel.numberOfLines = 2;
    cell.detailTextLabel.text = concat;
    return cell;
}

答案 1 :(得分:0)

您可以使用界面构建器创建自定义单元格,并使用它而不是UITableViewCell。

请检查:http://www.backslashtraining.com/blog/2012/3/10/ios-5-tip-of-the-week-custom-table-view-cells.html