Accessing cell attributes outside of cellForRowAtIndexPath

custom-cell, ios, ios5, uitableview

Solution

you can get UITableViewCell using NSIndexPath.

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:YOUR_ROW inSection:YOUR_SECTION];

UITableViewCell* cell = [yourTable cellForRowAtIndexPath:indexPath];
cell.textLabel.textColor = YOUR_COLOR;
[yourTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

Hope it helps you.

Problem

I have five fields setup on a Signup controller. Username, displayname, password, confirm password and email address. They are setup with the following: ``` static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.selectionStyle = UITableViewCellSelectionStyleNone; cell.textLabel.textColor = [UIColor colorWithRed:14.0f/255.0f green:62.0f/255.0f blue:178.0f/255.0f alpha:0.8f]; cell.textLabel.font = [UIFont boldSystemFontOfSize:13.0f]; switch ( indexPath.row ) { case 0: { cell.textLabel.text = NSLocalizedString(@"UsernameFieldLabel", @"Username field label"); [cell addSubview:self.usernameField]; break ; } case 1: { cell.textLabel.text = NSLocalizedString(@"DisplayNameFieldLabel", @"Displayname field lael"); [cell addSubview:self.displayNameField]; break ; } case 2: { cell.textLabel.text = NSLocalizedString(@"PasswordFieldLabel", @"Password field lael"); [cell addSubview:self.passwordField]; break ; } case 3: { cell.textLabel.text = NSLocalizedString(@"ConfirmPasswordFieldLabel", @"Confirm Password field lael"); cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; cell.textLabel.numberOfLines = 2; [cell addSubview:self.confirmPasswordField]; break ; } case 4: { cell.textLabel.text = NSLocalizedString(@"EmailFieldLabel", @"Email field lael"); [cell addSubview:self.emailField]; break ; } } return cell; ``` The cells themselves work fine. I then have some validation on a button which checks for a valid email address etc, this also works fine. What I would like to be able to do is update the cell.textLabel.textColor attribute in the validation code. For example, if the email address is not valid I want to update the label text color to Red so that it stands out (I also sort the responder etc). How do I get a reference to this specific cell outside of the setup of cells? EDIT This is the change following an answer. I need to access the 5th cll (index path 4) in section 1(only one section in table view): ``` NSIndexPath *indexPath = [NSIndexPath indexPathForRow:4 inSection:1]; UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]; cell.textLabel.textColor = [UIColor redColor]; [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; ```

Original source