我已经实现了一个自定义表格单元格,并在表格进入cellForRowAtIndexPath时收到运行时错误(“无法识别的选择器发送到实例”).尝试实例化自定义单元格时发生错误.我之前已经成功实现了这一目标,但现在错误不会消失.我有一个prtotype单元格,其自定义类属性设置为自定义单元格UITableViewCell子类.这是自定义单元格:
#import "FavoriteCell.h" @implementation FavoriteCell @synthesize lblGaugeID,lblMainTitle,bgImage; - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { bgImage = [UIImage imageNamed:@"tableCellBG.png"]; self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { UIColor *transparentBG = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; UIColor *foregroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; //UIColor *shadowColot = [UIColor colorWithWhite:0.75 alpha:1.0]; CGSize size = self.contentView.frame.size; self.backgroundView = [[UIImageView alloc] initWithImage:bgImage]; self.lblMainTitle = [[UILabel alloc] initWithFrame:CGRectMake(8.0,0.5,size.width-16,size.height-40)]; [self.lblMainTitle setFont:[UIFont systemFontOfSize:12.0]]; [self.lblMainTitle setTextAlignment:NSTextAlignmentLeft]; [self.lblMainTitle setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; [self.lblMainTitle setBackgroundColor:transparentBG]; self.lblGaugeID = [[UILabel alloc] initWithFrame:CGRectMake(20.0,31.0,size.height-40)]; [self.lblGaugeID setFont:[UIFont boldSystemFontOfSize:15.0]]; [self.lblGaugeID setTextAlignment:NSTextAlignmentLeft]; [self.lblGaugeID setTextColor:foregroundColor]; [self.lblGaugeID setShadowOffset:CGSizeMake(0.2,0.2)]; [self.lblGaugeID setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; [self.lblGaugeID setBackgroundColor:transparentBG]; [self.contentView addSubview:lblGaugeID]; [self.contentView addSubview:lblMainTitle]; } return self; } @end
这里是它的实例(摘自我的视图控制器类):
-(FavoriteCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = @"favoriteCell"; FavoriteCell *cell = (FavoriteCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; //error if(cell == nil){ cell = [[FavoriteCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } NSString *siteName = [faveKeys objectAtIndex:indexPath.row]; [cell.lblMainTitle setText:siteName]; [cell.lblGaugeID setText:[allFavorites objectForKey:siteName]]; return cell; }
这是完整的错误消息:
* Terminating app due to uncaught exception ‘NSInvalidArgumentException’,reason: ‘-[__NSCFConstantString instantiateWithOwner:options:]: unrecognized selector sent to instance 0x24bb0’
谁能提供一些关于检查的建议?谢谢!维维安
解决方法
使用 – (void)registerNib:(UINib *)nib forCellReuseIdentifier