0

私はすでに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 メソッドで作成されるときに行の高さを増やします。

問題: 新しいラベル「行」をコンテンツ ビューに追加すると、ラベルが高くなりません (デフォルト ビューがビューの中央に移動します)。字幕ビューの下に正しく作成して配置するにはどうすればよいですか? 最初のサブタイトルを複数行に変更する場合、2 番目のラベルが何をすべきかを知っているとよいでしょう。

ココアに相対的な位置付けがあればいいのに。それともまだ見つからない!

4

2 に答える 2

2

詳細テキスト ラベルを複数行にして、2 つの文字列を 1 つのラベルに追加できます。この例では、データのディクショナリに 3 つのキーがあります。メイン ラベル テキストの「main」と、2 つのサブタイトル文字列の「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;
}
于 2012-12-11T17:03:11.200 に答える
0

インターフェイス ビルダーでカスタム セルを作成し、UITableViewCell の代わりに使用できます。

これを確認してください:http://www.backslashtraining.com/blog/2012/3/10/ios-5-tip-of-the-week-custom-table-view-cells.html

于 2012-12-11T15:57:17.990 に答える