编辑:感谢user2404543,我发现了我的错误。编辑代码以显示此修复程序。
我有一个tableViewController,它设置了一个带有状态列表的表。我试图使用UIColor设置其cell.background颜色,该UIColor是NSMutableArray中的对象的一部分。该对象由NSString stateName,NSString stateNickName,NSString licensePlateURL和UIColor颜色组成。对象的所有元素均按预期填充表格,但是,当我尝试使用对象中的“颜色”元素设置cell.backgroundColor时,出现错误。以下是相关代码:
stateObject.h具有以下信息:
@interface stateObject : NSObject
@property (strong,nonatomic) NSString *stateName;
@property (strong,nonatomic) NSString *nickName;
@property (strong,nonatomic) NSString *licensePlateURL;
@property (strong,nonatomic) UIColor *bkgColor;
-(void) createState:(NSString*) name nickName:(NSString*) nName licenseURL:(NSString*) url color:(UIColor*) color;
@end
这是stateObject.m文件信息:
@synthesize stateName,nickName,licensePlateURL,bkgColor;
-(void) createState:(NSString *)name nickName:(NSString *)nName licenseURL:(NSString *)url color:(UIColor *)color
{
stateName = name;
nickName = nName;
licensePlateURL = url;
bkgColor = color;
}
该对象在我的dataSource类中设置,并添加到我的NSMutableArray中,该对象如下所示:
stateObject *newState1 = [[stateObject alloc] init];
[newState1 createState:@"Alabama" nickName:@"Yellowhammer State" licenseURL:@"http://www.15q.net/us1/al09a.jpg" color:[UIColor whiteColor]];
alabama = newState1;
我正在使用的方法是这样的:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{//This line is now correct and properly sets the backgroundColor.
cell.backgroundColor = [self.stateArray[indexPath.section][indexPath.row]bkgColor];
}
我得到的错误是这样的:
assignment2[11591:c07] -[stateObject color]: unrecognized selector sent to instance 0x759b620
assignment2[11591:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[stateObject color]: unrecognized selector sent to instance 0x759b620'
如果我只是在上述方法中创建一个UIColor对象,然后将值设置为该对象,那么它将正常工作,那么我在做什么错呢?
我需要使用数组中的UIColor的全部原因是,即使在将它们滚动出屏幕后,这些单元仍将保留其颜色。如果我只是将颜色设置为
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
方法。
最佳答案
错误消息指出您的stateObject无法响应消息“颜色”。换句话说,您的类stateObject没有名为“ color”的方法。