53

viewDidLoadでメソッドを使用できますUITableviewCellか?

4

10 に答える 10

85

いいえ、UITableViewCell(UIViewControllerの一部)をサブクラス化するカスタムセルクラスにviewDidLoadを記述しないでください。

-(void)layoutSubviews
{
    [super layoutSubviews];
}

カスタム セルのコントロールのフレームとすべてを定義できる場所。Apple の UITableviewCell リファレンスを参照してください。

ただし、「viewDidLoad」はオブジェクトの存続期間中に一度だけ呼び出されることに注意してください。これは、一般的な OO プログラミングの初期化子に似ています。ただし、「layoutSubviews」は各セルで何度も呼び出されます (スクロールなどの問題によって異なります)。この理由から、viewDidLoad で「通常行う」ことの多くが、layoutSubviews ではできないことを認識することが重要です。

viewDidLoad は1 回だけ呼び出されることに注意してください。layoutSubviews は頻繁に呼び出されます。

書いてしまえばただの関数になります。

カスタムセルのチュートリアル

于 2012-05-14T06:20:31.617 に答える
18

UITableViewCell の一部の IBOutlets を初期化しようとしている場合は、awakeFromNib() 呼び出しを使用することをお勧めします。

override func awakeFromNib() {
    super.awakeFromNib()
    // Do your stuff
    // myIBOutlet.text = "Hello" 
}
于 2017-08-07T12:41:59.497 に答える
14

電話super.layoutSubviews()もしたほうがいいです。スウィフトの構文:

override func layoutSubviews() {
    super.layoutSubviews()
}
于 2015-12-03T06:55:39.660 に答える
2

UIKit 関数viewDidLoadは UIViewController のメンバーであり、UITableViewCell はそれを継承しません。必要に応じて名前付き のメソッドを作成できますがviewDidLoad、UIViewController サブクラスのように呼び出されることはありません。

于 2012-05-14T06:18:17.990 に答える
0

はい、書き込むことはできますが、viewDidLoadデリゲートメソッドではないため、自動的に呼び出されない ため、コードを実行するには手動で呼び出す必要があります。UITableViewCellviewDidLoadUITableViewCell[self viewDidLoad]

于 2012-05-14T06:22:17.323 に答える