17

セルのIndexPathを取得する方法を教えてもらえますか?IndexPathをtableView:cellForRowAtIndexPath:メソッドに保存していましたが、これはセルが表示されているときにのみ読み込まれ、viewDidLoadメソッドでそのインデックスパスを知る必要があります。私が言ったように、セルが一度表示された後にのみその値をロードするため、これはnull値になりました。

ありがとうございました。

編集

その意図は、特定の数を持つが、セクションと行の数に比例しない特定のセルにジャンプできるようにすることです。

4

4 に答える 4

18

tableViewでメソッドindexPathForCell:を使用します。このメソッドへのポインタを指定すると、UITableViewCellそのindexPathが返されます。

にまだ設定されていない場合scrollToRowAtIndexPath:atScrollPosition:animated:は、メソッドにを入れることができます。モーダルビューコントローラが再署名を呼び出す場合など、ビューがロードされた後に複数回表示される可能性がある場合は、とにかくこれはより良い場所です。viewWillAppearviewDidLoad

于 2010-04-01T00:09:17.727 に答える
2

AにはプロパティUITableViewCellがありません。デリゲートは、特定のセルを要求するメソッドを定義しますNSIndexPathが、それはセルがプロパティと永続的な関係を持っていることを意味するものではありません。UITableViewDataSourceNSIndexPathNSIndexPath

この物件が何のために欲しいのかをもっと説明していただければ助かりますか?セルの位置をどうしviewDidLoadますか?

于 2010-03-30T19:32:51.783 に答える
1

これを試してみてください。

    NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:EventlistTable_obj];
NSIndexPath *indexPath = [EventlistTable_obj indexPathForRowAtPoint: currentTouchPosition];
 NSLog(@"Selected  row:%d in section:%d",indexPath.row,indexPath.section);

このように電話してください:

[cell.fourth_image_button addTarget:self action:@selector(Btn_pressed:event:) forControlEvents:UIControlEventTouchUpInside];
于 2011-05-03T11:29:55.983 に答える
0

あなたがあなた自身の質問に答えたように私には思えます:あなたはできません。viewDidLoadの実行時にセルにindexPathがないためです。実際、セルのデキュー(いい言葉です!)を使用すると、まったく同じセルを再利用して10分の1秒以内に別のインデックスに配置できるため、後で1つもありません。

編集:わかりました。私はあなたが望むものを理解していると思います。セルをtableViewに渡すときに、indexPathを自分でどこかに保存しています。注:これを行わないと、特定のセルがどのindexPathに配置されているかを実際に知る方法はありません。少なくとも、本来の方法で実行している場合はそうではありません。

したがって、できることは、viewDidLoadメソッドですべてのセルを作成し、それらを配列に格納し、テーブルビューで要求されたら、その配列からセルを渡すだけです。

これは、セルの再利用を妨げるため、テーブルビューにデータを入力するのに適した方法ではないことに注意してください。より良い方法は、セルのコンテンツ(プレーンなUIView)を配列に保存し、セルを返す前にそれらを子としてセルのコンテンツビューに追加することです。これにより、セルの再利用が可能になります。これは、優れたパフォーマンスを実現するために不可欠です。画面に収まるよりも多くのセルがない場合でも、それらを再利用することを心配する必要はありません。

于 2010-03-30T19:57:14.487 に答える