これは私に髪を引っ張らせます。テキストと詳細を含む UITableViewCellStyleSubtitle スタイルのテーブルを作成しようとしています。しかし、詳細は表示されません。通常、これは誰かがセルを正しいスタイルで初期化するのを忘れたことが原因ですが、この場合はそうではありません。UITableViewCellStyleValue2 を使用すると、テキスト ラベルは右に移動しますが、4 つのセル スタイルすべてを試しましたが、詳細は表示されません。
以前に何度もテーブルを作成しました。この場合に考えられる唯一の大きな違いは、UITableViewController を使用していないことです。代わりに、他のビューと同じように UITableView を埋め込み、独自のデータ ソースとデリゲートを接続します。
私はこれに重要な方法を煮詰めました:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Get the UITableViewCell (out of the recycling pool, or de novo)
NSString *reuseID = @"CELL";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseID];
if (not cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:reuseID] autorelease];
}
cell.textLabel.text = @"Foo";
cell.detailTextLabel.text = @"Bar";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.detailTextLabel.frame = CGRectMake(10, 20, 200,22); // required
cell.detailTextLabel.font = [UIFont boldSystemFontOfSize:12]; // also required
//[cell setNeedsLayout]; (makes no difference)
return cell;
}
上記の「必要な」行の両方を含める場合にのみ詳細テキストを表示できます (そして、デフォルト以外のセル スタイルを使用します)。その場合でも、テキスト ラベルの位置は詳細ラベルの位置と完全に重なります。 .
そのため、初期化子が detailTextLabel UILabel を作成しているように見えますが、フォント サイズをゼロに設定し、フレームを空またはオフスクリーンに設定しています。(デバッガーでこれらを調べてみましたが、あまり役に立ちません。フォント サイズがゼロで、textLabel と detailTextLabel の両方のフレームが空ですが、textLabel は常に正常に表示されます。)
明らかに、ラベルのサイズとフォントを手動で調整することで、必要に応じて回避できます。しかし、この場合、通常はスタイルとテキストを設定するだけでレイアウトが自動である場合に、そうしなければならないことは非常に気になります。Google とスタック オーバーフローを検索しましたが、同様の問題への参照が見つかりません。ここで何が起こっているのか誰にも分かりませんか?
(iOS 6.1 でのテスト)