2012-04-02 12 views
2

私はiPhone開発の新人です。私は問題を抱えていた。私は私のUITableViewで実装されているチェックボックス機能が必要です。しかし私のUITableViewCellsは、画像と3つのUILabelsからなるカスタムセルです。テーブルビューにサブビューを表示すると、チェックボックスのイメージを配置できるようになりました。これで成功しました。しかし問題は、画像をクリックするたびに、最後のセルのチェックボックスだけが変更されることです。私はクリックしたセルにアクセスしたいと思います。テーブルビューでセルにアクセスするには?

私はこの

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath] 

を試してみました。しかし、細胞がカスタムであるので、これはクラッシュします。

誰かが私にそれを行う良い方法を提案できますか?あなたはおそらく、その後、細胞を取得することが傾く場合は、正しく再利用可能なセルの概念を使用しているwouldntのあなたのテーブルビューDidSelectデリゲートメソッド

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

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UIImageView *image = [cell.contentView viewWithTag:15]; 
    //You should have set the tag value as 15 when creating the image in cell 
    //and you should have added to the cell contentview 

} 

+0

のお役に立てば幸いですより多くのコードを投稿してください。クラッシュしたときのエラーメッセージを投稿してください。 – Ali

+1

タッチされているセルにアクセスする理由を教えてください。あなたはCELLではなく、DATAを扱うべきです。セルはデータを表示するためだけにあり、データはモデルに保存されます(わからない場合はMVCを検索します)。 –

+0

' - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath'を使用すると、' indexPath.row'を使用してインデックスを選択します。 – Hemang

答えて

8

代わりの

012を使用して - として、このタグのヘルプ
UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath] 

YourCustomCell *cell = (YourCustomCell *)[self.tableView cellForRowAtIndexPath:indexPath]; 

を使ってみて、それが

+0

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

+0

@ user1288402あなたは大歓迎です。それが助けになった場合、正しい答えとしてマークすることを忘れないでください。これは、ユーザーが将来あなたの質問に答えるよう促します。 – Novarg

+0

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

1

。だからあなたのcellforrowindexコード全体を投稿してください。

チェックの種類のものを使用している場合。なぜあなたのイメージの代わりにtableviewのデフォルトの開示インジケータを使用しないでください。

2

タグを定義する必要がまず第一に -

#pragma imageViewTag 1 

、あなたのcellForRowAtIndexPathで、その後あなたとあなたのイメージ図任意の場所にアクセスすることができ、あなたのイメージビューに

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

をこのタグを割り当てます

UITableViewCell *cellView = (UITableViewCell*) [tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]; 

UIImageView *imgView = (UIImageView*) [cellView viewWithTag:imageViewTag]; 
関連する問題