user1288402
user1288402

Reputation: 35

How to access the cell in tableview?

I am new to the iPhone development. I got stuck with a problem. I want a check box function implemented in my UITableView. But my UITableViewCells are custom cell which consist of image and 3 UILabels. I could bring a sub view to the table view so that check box image can placed and I am successful in that. But the problem comes is whenever I click on the image only the last cell check box get changed. I would like to access the cell which I've clicked.

I have tried this

    UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]

But this crashes since cell is custom.

Can any one suggest me a good method to do that?

Upvotes: 2

Views: 5652

Answers (3)

Novarg
Novarg

Reputation: 7440

Instead of using

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]

try using

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

Hope it helps

Upvotes: 9

ipraba
ipraba

Reputation: 16543

In your TableView DidSelect Delegate method

- (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

}

If you cant able to get the cell then probably you wouldnt have used the reusable cell concept correctly. So post your entire cellforrowindex code.

If you are using the check kind of thing. Why dont you use the default disclosure indicator of tableview instead of your image.

Upvotes: 1

saadnib
saadnib

Reputation: 11145

First of all you need to define a tag -

#pragma imageViewTag 1

then in your cellForRowAtIndexPath assign this tag to your image view

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

then you can access your image view any where with the help of this tag as -

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

 UIImageView *imgView = (UIImageView*) [cellView viewWithTag:imageViewTag];

Upvotes: 2

Related Questions