UITableViewControllerであり、20個のスタティック(!)セル(4つのグループ、各グループに5つのセル)を含む設定画面があります。すべての静的セルにラベルが含まれています。静的セルの束を持つテーブルビュー内のすべてのラベルのテキスト色を設定します。
ラベルごとにコンセントを作成せずにテキストの色を個別に設定せずに、すべてのラベルのテキストの色を設定する方法はありますか?
UITableViewControllerであり、20個のスタティック(!)セル(4つのグループ、各グループに5つのセル)を含む設定画面があります。すべての静的セルにラベルが含まれています。静的セルの束を持つテーブルビュー内のすべてのラベルのテキスト色を設定します。
ラベルごとにコンセントを作成せずにテキストの色を個別に設定せずに、すべてのラベルのテキストの色を設定する方法はありますか?
UILabelをサブクラス化し、サブクラスでテキストの色を設定することをお勧めします。あなたのレイアウトで、あなたのUILabelsのクラスをあなたのサブクラスに変更してください。ボーナスとして、IBDesignableにして、あなたのカスタマイズがストーリーボードに表示されるようにしてください。
import UIKit
@IBDesignable
class CustomLabel: UILabel {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
customize()
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func prepareForInterfaceBuilder() {
customize()
}
private func customize() {
textColor = UIColor.redColor()
}
}
ありがとうございます。それは悪くないですが、各ラベルにアウトレットを割り当てて、 '-tableView:cellForRowAtIndexPath:'または ' - tableView:willDisplayCell:forRowAtIndexPath:'に設定するのと似ています。 – hkdalex
またそれは、静的のtableView細胞上では動作しませんとだけdequeueReusableCellWithIdentifier:
を呼び出すことはありません、-tableView:cellForRowAtIndexPath:
を実装します。代わりにsuper.cellForRowAtIndexPath:
に電話してください。
その後、カスタムセルcell.textLabel
を介して、または場合はラベルにアクセスすることができます。ここではcell.contentView.subviews.first as? UILabel
ありがとうございます、これはうまくいくようですが、私は最終的に ' - tableView:willDisplayCell:forRowAtIndexPath:'でラベルにアクセスして別の方法に行きました。質問に対する自分の答えを見てください。 – hkdalex
は、私はそれをやった方法です:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let view = cell.contentView.subviews.first
if let viewToTest = view as? UILabel
{
viewToTest.textColor = UIColor.redColor()
}
}
は、実は私の場合には、細胞内のラベルやその他のコントロールがしていますUIStackView、そのラベルのビューにアクセスするために私が使用します。
let view = cell.contentView.subviews.first?.subviews.first
の代わりに:
let view = cell.contentView.subviews.first
この場合、私のラベルはセル内でさらに1レベル上にあるためです。
これを行うもう1つの方法があります。これは、セルのビュー階層内のすべてのラベルにアクセスすることを保証します。どのレベルでも問題はありません。
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
recursiveSetTextColorForLabelsInView(cell)
}
func recursiveSetTextColorForLabelsInView(inView: UIView) {
for view in inView.subviews {
if let subview = view as? UILabel {
subview.textColor = UIColor.redColor()
}
else {
self.recursiveSetTextColorForLabelsInView(view)
}
}
}
グループ化されたスタティックセルですか? –