У меня есть пользовательская ячейка, и когда пользователь выбирает эту ячейку, я бы хотел, чтобы текст в двух UILabels изменился на светло-серый.изменение цвета текста в пользовательском UITableViewCell iphone
ChecklistCell.h:
#import <UIKit/UIKit.h>
@interface ChecklistCell : UITableViewCell {
UILabel *nameLabel;
UILabel *colorLabel;
BOOL selected;
}
@property (nonatomic, retain) IBOutlet UILabel *nameLabel;
@property (nonatomic, retain) IBOutlet UILabel *colorLabel;
@end
ChecklistCell.m:
#import "ChecklistCell.h"
@implementation ChecklistCell
@synthesize colorLabel,nameLabel;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (void)dealloc {
[nameLabel release];
[colorLabel release];
[super dealloc];
}
@end
Это работает отлично, за исключением случаев, когда я прокручиваю прочь от измененных ячеек, а затем прокручиваю назад, ячейка возвращается в исходное состояние. Поэтому я предполагаю, что мне нужно отслеживать, какие ячейки модифицированы в другом месте? Im, угадывая, чтобы сохранить массив indexPaths, которые были изменены, то в методе cellForRowAtIndexPath он проверит массив для этого пути индекса? Или есть какой-то способ? – Brodie
и, конечно, теперь, когда я пытаюсь сделать это, я не могу легко сравнивать два индекса. – Brodie
Да, вы действительно должны обновлять свой источник данных одновременно. То, что я описал, действительно только для получения мгновенного визуального обновления. Я предполагаю, что у вас есть массив объектов, которые вы используете в качестве источника данных для таблицы?Вы можете добавить свойство к объекту, чтобы определить, выбрано оно или нет, обновите его в методе didSelectRowAtIndexPath (а также код выше) и используйте его для определения textColor в методе cellForRowAtIndexPath. Надеюсь, это ясно! –