0

编辑:感谢 user2404543,我发现了我的错误。编辑代码以显示修复。

我有一个 tableViewController 设置一个包含状态列表的表。我正在尝试使用作为 NSMutableArray 中对象的一部分的 UIColor 设置其 cell.background 颜色。该对象由一个 NSString stateName、一个 NSString stateNickName、一个 NSString licensePlateURL 和一个 UIColor 颜色组成。对象的所有元素都按预期填充表格,但是,当我尝试使用对象中的“color”元素设置 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

方法。

4

1 回答 1

1

错误消息指出您的 stateObject 无法响应消息“颜色”。换句话说,您的类 stateObject 没有名为“color”的方法。

于 2013-10-12T17:36:05.143 回答