1

ストーリーボードにプロトタイプ セルを含むテーブルビューを設定しました。スワイプされたセルのサブビューを編集したいので、デリゲート メソッド tableView:willBeginEditingRowAtIndexPath: を実装しました。このメソッド内から編集中の現在のセルを取得するにはどうすればよいですか? tableView:cellForRowAtIndexPath: を使用すると、必要なセルではなく、新しいセルを取得します。これは、dequeueReusableCellWithIdentifier:forIndexPath: への後続の呼び出しが、同じ識別子と indexPath に対して異なるオブジェクトを返すように見えるためです。

次のコードを使用すると、この動作を簡単に再現できます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    NSLog(@"cell = %@", cell);
    cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    NSLog(@"different cell = %@", cell);
}

このメソッドを使用できない場合、特定の indexPath に配置されている現在のセルを取得するにはどうすればよいでしょうか? iOS6を使用しています。

4

3 に答える 3

4

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

の上UITableView

于 2013-05-29T10:43:22.363 に答える
2

これを使用して、セルにアクセスして変更します。

   NSIndexPath *indexPath = [NSIndexPath indexPathForRow:your_row inSection:your_section];
    UITableViewCell *currentCell = [you_table cellForRowAtIndexPath:indexPath];
    id anySubview = [currentCell viewWithTag:subview_tag]; // Here you can access any subview of currentcell and can modify it.

お役に立てば幸いです。

于 2013-05-29T10:46:59.193 に答える
0

私にとっても少し混乱しています。新しく作成されたものなのか、既存のものを取得したものなのかわからないためです。その場合、私は使用します

- (NSArray *)visibleCells

UITableView のメソッド。そして、その配列から取得します。どちらを探しているかを判断するには、tag プロパティを使用するか、cellForRowAtIndexPath:メソッドで設定されている indexpath プロパティをセルに追加します。セルが配列にない場合、とにかく非表示になりcellForRowAtIndexPath:、ユーザーがスクロールするとメソッドで作成されます。

于 2013-05-29T10:50:36.677 に答える