質問
Table View がセルの描画を完了したことをどのように検出できますか?
問題
UITableViewCell の contentView 内に 2 つのラベルを取得しました。これらのラベルのサイズは動的です。これは、UITableViewCell をサブクラス化することで実現できました。drawRect メソッドで、2 つのラベルのフレームをその内容に応じて調整します。ここで、すべての 2 番目のラベルを揃えたいと思います。
私の考えのステップ
- テーブル ビューでコンテンツを決定し、自動的にロードします。
- テーブル ビュー セルを実行し、UITableViewCell 内で最も遠い 2 番目のラベルの x 位置を特定します。
- この x 位置を保存し、任意のセルが描画されるときに、この x 位置を使用して 2 番目のラベルを配置します。
問題は、次のコードを使用する場合です。
for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) {
UITableViewCustomCell *cell = (UITableViewCustomCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0]];
NSLog ([cell.labelTwo description]);
}
2 番目のラベルはまだ描画されていません。つまり、フレームのサイズを特定できないため、すべての 2 番目のラベルを揃えるための適切な x 位置を見つけることができません。
UITableViewController をサブクラス化し、viewDidLoad や viewDidAppear などのイベントを調べてみましたが、残念ながらこれらのイベントでもセルはまだ描画されていません。
私が欲しいもの...
私が望むのは、テーブル ビューでセルを少なくとも 1 回描画して、テーブル ビュー セル内のラベルのサイズを決定できるようにすることです。cellForRowですべてのセルをループすることでこれを達成しようと考えましたが、セルは正常に返されますが、コンテンツはまだ描画されていないため、フレームの幅はゼロのままです。
誰にも解決策がありますか?
前もって感謝します、
マーク