изменить цвет UILabel в пользовательском UITableViewCell - PullRequest
1 голос
/ 12 февраля 2011

У меня небольшая проблема с изменением свойства UILabel textColor, оно не меняет цвет в методе tableView didSelectRowAtIndexPath Я использую CustomCell, который является SubClassed и

Я используюпоследней версии XCode4 GM, и мне было интересно, если кто-то испытывает что-то подобное или, возможно, это ошибка в версии xcode

ОБНОВЛЕНИЕ:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
  NSIndexPath *indexPath = [tableView indexPathForCell:(HSCustomCellTF *)[[textField superview] superview]];
  HSCustomCellTF *cell = (HSCustomCellTF *)[tableView cellForRowAtIndexPath:indexPath];
  cell.keyLBL.textColor = [UIColor redColor];
  cell.backgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"middleRowSelectedBG.png"]] autorelease];

  tableView.userInteractionEnabled = NO;

  return YES;
}

Я хотел бы добавить, что у меня естьпопробовал другие методы для достижения результата, но безуспешно, сейчас я собираюсь попробовать метод willDisplayCell и посмотреть, как это происходит, спасибо за помощь.

Также backgroundView действительно меняется, поэтому ядоступ к ячейке

Ответы [ 3 ]

0 голосов
/ 13 февраля 2011

Хорошо, я нашел ответ, кажется, что когда вы используете пользовательскую ячейку и хотите отредактировать цвет меток, то в подклассе tableViewCell НЕ устанавливайте свойство в методе layoutSubviews, один раз Я удалил свойство textColor из этого метода. @Gkchristopher ответ правильный, спасибо всем за помощь, надеюсь, это поможет кому-то еще.

0 голосов
/ 24 мая 2012

Используйте это:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];

    cell.label.textColor = [UIColor whiteColor];

    return indexPath;
}
- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];

    cell.label.textColor = [UIColor darkGrayColor];

    return indexPath;
}
0 голосов
/ 12 февраля 2011

Попробуйте:

tableView:willDisplayCell:forRowAtIndexPath:

из протокола UITableViewDelegate

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UITableViewDelegate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...