3

iPhone SDK 4 で XCode をバージョン 3.2.3 にアップグレードしてから、コードが機能しなくなりました。

スタイル付きのデフォルト セルがあり、 ofとtoUITableViewCellStyleSubtitleを設定したいのですが、何も起こりません。以前に使用されていたのと同じコードが機能しなくなりました。中央揃えは引き続き機能します。textAlignmenttextLabeldetailTextLabelcenterUITableViewCellStyleDefault

これを解決する方法を知っている人はいますか?この事実だけでカスタムセルを使用したくありません。

4

3 に答える 3

4

テキストが中央に配置されていない理由は、ラベルがテキストと同じ幅しかないためです。これは、テキスト ラベルの背景色を設定することで確認できます。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.textLabel.backgroundColor = [UIColor orangeColor];
}

セル幅を手動で設定しても効果がないようです。したがって、実際には独自のサブビューを追加するか、独自のサブクラスを作成する必要がありますUITableViewCell

UITableViewCellStyleSubtitleさえ言うためのドキュメント:

上部に左揃えのラベルがあり、その に小さな灰色のテキストで左揃えのラベルがあるセルのスタイル。iPod アプリケーションは、このスタイルでセルを使用します。

于 2010-06-23T14:13:18.223 に答える
1

これは、レンダリング後にラベル幅を変更して、センタリングを可能にする2つの部分からなるソリューションです。

-- (void) updateCenteringForTextLabelInCell:(UITableViewCell*)cell {

    UILabel* label = cell.textLabel;

    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, cell.contentView.frame.size.width, label.frame.size.height);

}


-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

// do your usual

// call the helper method 

[self performSelector:@selector(updateCenteringForTextLabelInCell:) withObject:cell afterDelay:0.05];

}
于 2012-12-06T16:54:40.953 に答える
0

さて、ついにApple開発チームが2010年6月23日からの私のバグレポートに答えました。

「superを呼び出した後、layoutSubviewsでテキストの配置を設定してみてください。」

于 2011-01-15T17:29:04.610 に答える