2

静的セルで構成されたUITableViewがあり、各セルには、画面の読み込み時にフィールドデータが入力されるUILabelが含まれています。1つの画面に収まるよりも多くのセルがあるため、テーブルビューがスクロールします。UILabelはデザイン時に非表示になり、すべてのテキストプロパティが設定されたら表示できるように設定したいと思います。tableViewのsubviewsプロパティを使用して、ラベルを繰り返してsetHidden:NOにしましたが、これは現在表示されているセル内のラベルにのみ影響します。どのUILabelが表示されているかどうかに関係なく、すべてのUILabelを反復処理するにはどうすればよいですか?

ありがとうジョナサン

4

2 に答える 2

1

cellForRowAtIndexPath: メソッドを呼び出すだけです。

for(NSUInteger i = 0; i < numberOfCells; i++) {
UITableView* cell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:i  inSection:0];
}
于 2012-04-22T22:03:09.600 に答える
1

メソッド内でこの問題に対処できますtableView:cellForRowAtIndexPath:

Apple のガイドが示唆する方法で静的セルを実装したと仮定すると、オブジェクトを介して提供されるセルを返すステートメントtableView:cellForRowAtIndexPath:のシーケンスのようになります。if-then-elseIBOutlet

if (indexPath.row == 0) {
    return cell1;
} else if (indexPath.row == 1) {
    return cell2;
} // .. and so on

このコードを次のように変更します。

UITableViewCell *res = nil;
if (indexPath.row == 0) {
    res = cell1;
} else if (indexPath.row == 1) {
    res = cell2;
} // .. and so on
// Call your custom code that makes the label visible
if (allTextPropertiesHaveBeenLoaded) {
    [res setMyLabelVisible];
}
return res;

すべてのテキスト プロパティが設定されたら、 を呼び出しreloadDataて、すべてのセルを強制的に通過させtableView:cellForRowAtIndexPath:、再構成します。

于 2012-04-22T21:59:44.123 に答える