2012-04-22 3 views
2

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

おかげ ジョナサン

答えて

1

あなたのtableView:cellForRowAtIndexPath:メソッド内でこの問題に対処することができます。次のように

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

は、このコードを変更します:

あなたは、静的な細胞the way Apple's guide suggestsを実装していると仮定すると、あなたのtableView:cellForRowAtIndexPath:IBOutletオブジェクトを通して提供される細胞を返すif-then-else一連の文のようになります

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:とし、再設定します。

1

がちょうどcellForRowAtIndexPath呼びかける:メソッド

for(NSUInteger i = 0; i < numberOfCells; i++) { 
UITableView* cell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:i inSection:0]; 
} 
+0

@Calebを彼は – Otium

+0

は申し訳ありませんが、静的な細胞を使用していたと述べた - それを逃しました。 – Caleb

関連する問題