通过另一个类将对象传递给类

时间:2014-07-10 14:12:29

标签: ios xcode uibutton

我有一个tableview控制器类,一个tableviewcell子类和一个uibutton子类。 我正在tableviewcell子类中创建一个unbutton子类的实例,并初始化一个特定单元格位置的按钮。 然后我在tableview控制器类中使用此单元格。此外,我正在尝试向按钮添加IBAction。但它无法识别uibutton子类的对象,而其他一切工作正常。我在宣言中做错了什么?

tableviewcell.m

#import "tableviewcell.h"
#import "CustomCheckButton.h"

    CustomCheckButton *starbtn = [[CustomCheckButton alloc] init];;


            starbtn = [[CustomCheckButton alloc]initWithFrame:CGRectMake(243,0, 30, 30)];

tableviewcontroller.m

在cellForRowAtIndexPath对象中,startbtn无法识别:

#import "ScannedProductControllerViewController.h"
#import "imageCellCell.h"


    tableviewcell*firstRowCell = (tableviewcell *)cell;


    [firstRowCell.prodimage  setImage: [UIImage imageNamed:@"test1.jpg"]];
    [firstRowCell.label1 setText:@"17.5"];
    [firstRowCell.label2 setText:@"Score"];

    [firstRowCell.basket  setImage: [UIImage imageNamed:@"Basket.jpg"]];

    // reference of the home button to the buttonclick method

    [firstRowCell.homebtn addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];

    // reference of the favorites button to the buttonclick method

    [firstRowCell.starbtn addTarget:self action:@selector(clickFavButton:) forControlEvents:UIControlEventTouchUpInside];

CustomCheckButton.h

#import <UIKit/UIKit.h>

@interface CustomCheckButton : UIButton {
    BOOL    _checked;
}

@property (nonatomic, setter = setChecked:) BOOL checked;

-(void) setChecked:(BOOL) check;

@end

2 个答案:

答案 0 :(得分:1)

@interface TableViewCell : UITableViewCell
@property (nonatomic, strong) CustomCheckButton *startButton;
@end

@implementation TableViewCell
- (instancetype)init {
    self = [super init];
    self.startButton = [[CustomCheckButton alloc]initWithFrame:CGRectMake(243,0, 30, 30)];
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.contentView addSubview:self.startButton];
}
@end

答案 1 :(得分:0)

首先,为什么不在故事板中创建单元格作为原型单元格或在XIB文件内部。

然后,为按钮创建一个IBAction并在单元格中对其进行响应。最后,为您的单元格制定一个协议,在点击按钮时通知代表。然后,您可以将表视图控制器设置为单元格的委托,并响应按下的按钮。如果您需要确定您正在使用哪个单元格,您甚至可以将单元格作为您使用的协议方法之一的参数传递。