[CustomCell setImageView:]:无法识别的选择器

时间:2014-07-09 15:21:31

标签: ios objective-c uitableview uiimageview

我将UIImageView添加到CustomCell(UITableViewCell的子类) 但是,当我在CustomCell上的imageView上设置图像时,
应用程序与日志消息冲突:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CustomCell setImageView:]: unrecognized selector sent to instance 0x10912d990'

我有这段代码。

的ViewController

@property (nonatomic, strong) UITableView* tableView;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 508)];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    [self.view addSubview:self.tableView];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString* cellIdentifer = @"Cell";
    CustomCell* cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifer];
    if (cell == nil) {
        cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifer];
    }
    switch (indexPath.section) {
        case 0:
            switch (indexPath.row) {
                case 0:
                    cell.imageView.image = [UIImage imageNamed:@"hello.jpg"];
                    break;
                default:
                    break;
            }
        default:
            break;
    }
    return cell;
}

CustomCell

@property (nonatomic, strong) UIImageView* imageView;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 310, 170)];
        [self addSubview:self.imageView];
    }
    return self;
}

您是否有任何想法在customCell上向imageView添加图像?
谢谢。

4 个答案:

答案 0 :(得分:2)

您要尝试做的是使用此行UITableViewCell设置imageView的超类只读self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 310, 170)];属性。你不能这样做。

文档:https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/imageView

答案 1 :(得分:0)

@property(非原子,强)UIImageView * imageView;应该在CustomCell.h而不是CustomCell.m中,因此可以从其他类访问它。

答案 2 :(得分:0)

谢谢你的答案。我已经解决了。

@property (nonatomic, strong) UIImageView* imageView;

@property (nonatomic, strong) UIImageView* myImageView;

答案 3 :(得分:0)

我认为你必须这样做...... 在

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView==TABLE_MEMBERS)// && (count_cell%2==0))
        {

            Groupie_Moment_Timeline_Cell_Members *cell_mem =[tableView dequeueReusableCellWithIdentifier:@"Groupie_Moment_Timeline_Cell_Members"];

            if (cell_mem==nil)

            {
                NSArray *nibs=[[NSBundle mainBundle] loadNibNamed:@"Groupie_Moment_Timeline_Cell_Members" owner:self options:nil

    ];
                cell_mem=[nibs objectAtIndex:0];
            }




   cell_mem.selectionStyle=UITableViewCellSelectionStyleNone;
        [cell_small.IMG_TableImage setImage:[UIImage imageNamed:@"a.png"];
                return cell_small;