0

それぞれが一意の識別子を持つさまざまな種類のセルを含むテーブル ビューがある場合、indexPathデキューする前に、関連する再利用識別子を見つけることができますか?

- (UITableViewCell *)tableView:(UITableView *)tableView 
                     cellForRowAtIndexPath:(NSIndexPath *)indexPath

セルで何らかの反射を行うことができる別の方法があれば、それも問題ありません。

ありがとう

4

4 に答える 4

2

できますが、すべての作業を行う必要があります。indexPath を検査し、特定のセルに対して生成しているコンテンツの種類を判断し、そのタイプのセルをデキューまたは作成して、設定し、返すのはあなたの仕事です。

ただし、セルがまだ存在しないため、セルに対してリフレクションを実行することはできません。それがの目的です-tableView:cellForRowAtIndexPath:

これにアプローチする 1 つの方法は、各セルに関する情報のディクショナリを含む配列を作成することです (テーブルのセクションごとに 1 つの配列が必要です。ここでは、セクションが 1 つしかないと仮定します)。の冒頭で-tableView:cellForRowAtIndexPath:、インデックス パスの行番号を使用して配列にインデックスを付け、ディクショナリの値を調べて、デキューするセルの種類とその設定方法を決定します。

編集:セル再利用識別子とは何か、およびその生成方法について混乱しているようです。セル再利用識別子は、テーブルビュー内のセルに添付される任意の文字列です。セルのデキューを要求すると、テーブルビューは、その再利用識別子を持つ未使用のセルが利用可能かどうかを確認します。すべてのセルが同じタイプのセルで、同じ方法で構成されている場合、再利用 ID は 1 つだけで、任意の文字列を選択できます。-dequeueReusableCellWithIdentifier:UITableViewCellの両方の呼び出しでその文字列を使用していることを確認してください-initWithStyle:reuseIdentifier:

于 2013-03-28T15:09:50.820 に答える
0

再利用識別子は、再利用のためにセルが選択されるプールであるため、どのインデックスパスにどのタイプのセルが必要かに関するデータを保存する必要があります。

例: もし

 reusableidentifier = @"reuse"; then when 
-dequeueReusableCellWithIdentifier:

が使用され、セルが再利用できる場合は「reuse」という名前のプールからセルが選択され、そうでない場合は新しいセルが作成されます。したがって、どのインデックスパスがどの再利用可能な識別子に属しているかを見つけることはできません。

于 2013-03-29T13:24:01.380 に答える
0

最終的に、あなたは cellIds の作成者であり、 で新しく作成されたセルにそれらを与えます。そのtableView:cellForRowAtIndexPath:ため、テーブル ビューに cellIds を要求する必要はありません。求めていることを達成するための最良の方法は、クラスに関数を追加することです。

-(NSString *)cellReuseIdForIndexPath:(NSIndexPath *)indexPath;

この関数は、辞書、配列、またはその他の任意の方法で cellIds を検索できます。テーブルビューに表示するデータと一貫性が保たれている限り、必要なときにいつでもその関数を使用してください。

于 2013-03-28T16:14:19.143 に答える
-1
if(cell != nil)    
NSLog(@"%@", cell.reuseIdentifier);
于 2013-03-28T15:24:08.140 に答える