iOS:自定义表格单元格'无法识别的选择器发送到实例'

时间:2013-07-10 13:33:54

标签: ios uitableview

我有一个带有自定义TableViewCell的tableView。我没有使用.xib文件来解决这个问题。问题是当表加载时我得到以下错误:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage nsli_superitem]: unrecognized selector sent to instance 0x91899b0'我不确定我在这里做错了什么。这是单元格的.m文件。

#import "TCMExhibitListCell.h"

@implementation TCMExhibitListCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
    [self setListImage:[[UIImage alloc] init]];
    [self setTitleLabel:[[UILabel alloc] init]];


    NSDictionary *names = @{@"listImage" : [self listImage]};

    NSString *fmt = @"H:|-0-[listImage]";

    NSArray *imgH = [NSLayoutConstraint constraintsWithVisualFormat:fmt
                                                            options:0
                                                            metrics:nil
                                                              views:names];
    [[self contentView] addConstraints:imgH];
}
return self;
}

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

// Configure the view for the selected state
}

@end

这是在tableview控制器中加载单元格的地方

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TCMExhibitListCell *c = [tableView dequeueReusableCellWithIdentifier:@"TCMExhibitListCell"];

if (!c) {
    c = [[TCMExhibitListCell alloc] initWithStyle:UITableViewCellStyleDefault
                               reuseIdentifier:@"TCMExhibitListCell"];
}

TCMExhibitRemote *e = [[self exhibits] objectAtIndex:[indexPath row]];

NSString *imageFile = [NSString stringWithFormat:@"%@/%@.jpg",[[TCMExhibitFeedStore sharedStore] imagePathByType:@"listImage"],[e image]];

[c setListImage:[UIImage imageNamed:imageFile]];

return c;
}

3 个答案:

答案 0 :(得分:20)

如果您进行一些谷歌搜索,您会发现nsli_superitem与自动布局相关联。这会指向[[self contentView] addConstraints:imgH];,指向NSString *fmt = @"H:|-0-[listImage]";,然后指向[self setListImage:[[UIImage alloc] init]];

即。您无法根据图片设置布局,因为它不是UI项目。

您可能应该根据某处的图像视图进行布局...

答案 1 :(得分:1)

我的问题是我试图在使用Visual Format Language的约束中使用sku_check($str,$productid) 。更改约束以使用UIViewController' UIViewController修复崩溃:

view

答案 2 :(得分:0)

我认为你忘了设置它。

self.listImage.translatesAutoresizingMaskIntoConstraints = NO;