我正在尝试创建一个扩展UITableViewCell的自定义类。我添加了一个布尔值(isValid),可以将其设置为切换验证状态的可视指示器。当调用isValid的setter时,它会设置属性并调用另一个方法来更新单元格的borderColor和detailTextLabel的文本颜色。所有更改都正确,但单元格实际上从未在我的应用程序中更新。我已经尝试了一切我能想到的让细胞刷新但没有成功。我确定有一些明显的东西我在这里失踪,有人请帮帮忙!
P.S。如果它有帮助,使用此单元格的表I具有静态行内容,因此我不认为它是重用问题。
更新: 根据要求,这里有一些源代码:
标题
// NewPlayerCell.h
#import <UIKit/UIKit.h>
@interface NewPlayerCell : UITableViewCell
@property(strong,nonatomic) UIColor *cellColor;
@property(weak,nonatomic) IBOutlet UITextField *nameTextField;
@end
实施
//
// NewPlayerCell.m
//
#import "NewPlayerCell.h"
@implementation NewPlayerCell
- (void) setCellColor: (UIColor*)color
{
_cellColor = color;
[self update];
}
-(void)update
{
if(self.cellColor!=nil)
{
self.contentView.layer.borderColor = self.cellColor.CGColor;
}
if(self.detailTextLabel!=nil)
{
self.nameTextField.textColor = self.cellColor;
}
[self layoutIfNeeded];
}
@end
TableView控制器
//Just a quick and dirty testing method that updates the color of
//any visible NewPlayCell objects in response to a button touch.
-(IBAction)colorChange:(id)sender
{
[[self.tableView visibleCells] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if( [obj isKindOfClass:[NewPlayerCell class]])
{
if( [game isEqualToString:@"Chess" ])
{
((NewPlayerCell *) obj).cellColor = [UIColor redColor];
}
else
{
((NewPlayerCell *) obj).cellColor = [UIColor blueColor];
}
}
}];
}