8

セルが選択されているときに、セルの textLabel と detailTextLabel を変更したい。以下を試しましたが、変化はありません。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    MyAppDelegate *appDelegate = (MyPhoneAppDelegate*)[[UIApplication sharedApplication] delegate];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.detailTextLabel.text = @"xxxxx";
    cell.textLabel.text =       @"zzzzz";
    [tableView reloadData];
}
4

6 に答える 6

10

tableView:cellForRowAtIndexPath:テーブルビューをリロードすると、メソッドで更新された @"xxxxx" と @"yyyyy" ではなく、元のデータを使用してすべてのセルが実際にダンプされ、リロード/表示されることに同意しますtableView:didSelectRowAtIndexPath:

小さなテスト プロジェクトでは、選択時にラベルを次のように変更できました。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.textLabel.text = @"it was tapped";
}
于 2010-04-20T04:17:24.940 に答える
2

セルが選択されている間は、テーブルをリロードしようとしないでください。代わりに、試してください

[セルセットNeedsLayout]

ラベルに上記の変更を加えた後。

また、メソッドでアプリのデリゲートを参照している理由はありますか?

于 2009-12-12T06:33:40.220 に答える
2

選択したセル (indexPath で記述) の再読み込みを試みます。

[yourTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
于 2012-07-11T10:27:58.117 に答える
0

新しいiPadプロジェクト(分割ビュー)を作成し、[クラス]->[ファイル]に移動します。最も簡単な方法がそこに与えられています。XCodeの生成されたコード。

サンプルコード行:-

cell.textLabel.text = [NSString stringWithFormat:@"Row %d", indexPath.row];

あなたはそれらを使用することができますcellForRowAtIndexPath ||&& didSelectRowAtIndexPath ..

于 2011-02-08T06:17:03.187 に答える
0

デリゲートで何をしようとしているのかわかりませんが、すでにインスタンス化されている tableView を呼び出してみてください。つまり、コール

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath: indexPath];

はっきりしないかもしれませんが、新しい空のテーブル ビューをインスタンス化しているということです。

UITableViewCell *cell = [**tableView** cellForRowAtIndexPath: indexPath]; //cell has nothing it is new.

古いものを呼び出すために交換することを検討してください

UITableViewCell *cell = [**self.tableView** cellForRowAtIndexPath: indexPath]; //now you have one that has a textField already in it
于 2014-11-19T07:10:39.490 に答える
-1

テーブル全体をリロードするのではなく、選択したセルのみを更新しようとしましたか?

[cell setNeedsDisplay];

それ以外の

[tableView reloadData];

これによりパフォーマンスが向上しますが、そうではありませんが、テーブル全体を更新すると選択が失われると思います(これが、最終的に変更が見られない理由かもしれません)...

于 2009-12-10T15:50:09.170 に答える