How can I get a uitableViewCell by indexPath?

128,713

Solution 1

[(UITableViewCell *)[(UITableView *)self cellForRowAtIndexPath:nowIndex]

will give you uitableviewcell. But I am not sure what exactly you are asking for! Because you have this code and still you asking how to get uitableviewcell. Some more information will help to answer you :)

ADD: Here is an alternate syntax that achieves the same thing without the cast.

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

Solution 2

Here is a code to get custom cell from index path

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:2 inSection:0];
 YourCell *cell = (YourCell *)[tblRegister cellForRowAtIndexPath:indexPath];

For Swift

let indexpath = NSIndexPath(forRow: 2, inSection: 0)
let currentCell = tblTest.cellForRowAtIndexPath(indexpath) as! CellTest

For Swift 4 (for collectionview)

let indexpath = NSIndexPath(row: 2, section: 0)
let cell = self.colVw!.cellForItem(at: indexpath as IndexPath) as? ColViewCell

Solution 3

Finally, I get the cell using the following code:

UITableViewCell *cell = (UITableViewCell *)[(UITableView *)self.view cellForRowAtIndexPath:nowIndex];

Because the class is extended UITableViewController:

@interface SearchHotelViewController : UITableViewController

So, the self is "SearchHotelViewController".

Solution 4

For Swift 4

    let indexPath = IndexPath(row: 0, section: 0)
    let cell = tableView.cellForRow(at: indexPath)

Solution 5

You can use the following code to get last cell.

UITableViewCell *cell = [tableView cellForRowAtIndexPath:lastIndexPath];
Share:
128,713
phpxiaoxin
Author by

phpxiaoxin

Updated on October 12, 2020

Comments

  • phpxiaoxin
    phpxiaoxin over 3 years

    How can I get a UITableViewCell by indexPath? Like this:

    I use the UIActionSheet, when I click confirm UIButton I want to change the cell text.

    The nowIndex I define as a property

    - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        if (buttonIndex == 0)
        {
            NSInteger section =  [nowIndex section];
            NSInteger row = [nowIndex row];
            NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
            formatter.dateFormat = @"yyyy-MM-dd";
    
            if (section == 0)
            {
                if (row == 0)
                {
    
                }
                else if (row == 1)
                {
                    UILabel *content = (UILabel *)[[(UITableView *)[actionSheet ] cellForRowAtIndexPath:nowIndex] viewWithTag:contentTag];
                    content.text = [formatter stringFromDate:checkInDate.date];
                }
                else if (row == 2)
                {
    
                }
            }
        }
    }
    
  • phpxiaoxin
    phpxiaoxin over 14 years
    hi david i rewrite the question ,can you see it again
  • devios1
    devios1 about 11 years
    Technically you want to call that on whatever the dataSource property of your tableView is set to, but usually that is self.
  • johnyu
    johnyu over 10 years
    Naming a class (..)View is confusing if it is a subclass of UIViewController.
  • Martín Serrano
    Martín Serrano about 7 years
    In the case of having two custom cell and I need to know which type of cell are returned on this index path. What would be the best approach to get the type?