Custom table cell view with xib throwing exception

2019-07-04 19:55发布

问题:

I have a problem with creating custom table cell view.

CustomCell.h

#import <UIKit/UIKit.h>

@interface CustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UILabel *date;
@property (weak, nonatomic) IBOutlet UILabel *title;
@property (weak, nonatomic) IBOutlet UILabel *content;

@end

CustomCell.m

#import "CustomCell.h"

@implementation CustomCell
@synthesize title, imageView, content, date;
- (void)awakeFromNib {
    // Initialization code
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

TableViewController

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *simpleTableIdentifier = @"CustomCell";
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:simpleTableIdentifier owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    cell.title.text = [titles objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:[images objectAtIndex:indexPath.row]];
    cell.content.text = [shortTexts objectAtIndex:indexPath.row];
    cell.date.text = [dates objectAtIndex:indexPath.row];
    return cell;
}

and thrown Exception

2014-10-14 19:06:59.290 pl.wroclaw.2017[7450:2962005] -[CustomCell _needsSetup]: unrecognized selector sent to instance 0x127d15bc0
2014-10-14 19:06:59.291 pl.wroclaw.2017[7450:2962005] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CustomCell _needsSetup]: unrecognized selector sent to instance 0x127d15bc0'
*** First throw call stack:
(0x1871a2084 0x1977d80e4 0x1871a9094 0x1871a5e48 0x1870ab08c 0x18ba63c08 0x18bc1a3bc 0x18bc0efc4 0x18ba04c60 0x18b921874 0x18b279d58 0x18b274944 0x18b2747e8 0x18b273fe8 0x18b273d6c 0x18bbae7f0 0x18bbaf69c 0x18bbad820 0x18f3a5640 0x18715a360 0x187159468 0x187157668 0x187085664 0x18b98f500 0x18b98a4f8 0x1000b65a4 0x197e46a08)
libc++abi.dylib: terminating with uncaught exception of type NSException

I tried everything, from removing xib and adding it again. I double checked my method with my previous project and it just works. Now with my new project it doesn't and I can't seem to find any solution. I tried looking up some info about this "_needsSetup", but I can't find any.

Thanks for your help.

回答1:

I had the same error and it was because I forgot to return a cell in this method:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


回答2:

I don't know if this will help or not, but the recommended way to use a xib based cell is to register the nib, rather than loading the nib in cellForRowAtIndexPath:. So, in viewDidLoad, put,

[self.tableView registerNib:[UINib nibWithNibName:<"your nib name here"> bundle:nil] forCellReuseIdentifier:@"CustomCell"];

Delete the if(cell==nil) clause.