CustomTableCell委托

时间:2017-08-04 04:45:19

标签: ios objective-c uitableview delegates

我有一个名为AdminOrderViewController的tableview,它有一个名为StepperProgressCell的自定义单元格。

此customcell有一个名为AYStepperView的自定义UIView。这个UIView中有一个按钮,我在它上面实现了一个委托,只要它被点击,我希望在clicked上调用这个委托AdminOrderViewController方法。

但是,我不知道如何添加cell.delegate ??

AdminOrderViewController.m

@interface AdminOrderViewController : UIViewController <AYStepperViewDelegate>

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        static NSString *CellIdentifier = @"StepperProgressCell";
        StepperProgressTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
        if (!cell) {
            cell = [[StepperProgressTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        }
        //cell.stepperView.delegate= ???
        return cell;
}

- (void)clicked
{
 // is not getting called?
}

StepperProgressTableViewCell.m

@interface StepperProgressTableViewCell ()

@property (nonatomic) AYStepperView *stepperView;
@property (nonatomic) NSUInteger currentIndex;
@property (nonatomic) NSUInteger currentStep;
@property (nonatomic) UIView *containerView;

@end

@implementation StepperProgressTableViewCell
@synthesize stepperView;

- (void)awakeFromNib {
    [super awakeFromNib];
    [self setUpViews];
}

- (void)setUpViews {

    self.stepperView = [[AYStepperView alloc]initWithFrame:CGRectMake(0, 0 , [[UIScreen mainScreen] bounds].size.width, kFormStepperViewHeight) titles:@[@"Processing",@"Ready",@"Delivered", nil)]];
    [self addSubview:self.stepperView];
}

AYStepperView.m

@protocol AYStepperViewDelegate <NSObject>

@required
- (void)clicked;

@end

- (void)buttonPressed:(UIButton *)sender {
   [stepperDelegate clicked];
}

更新:

enter image description here

2 个答案:

答案 0 :(得分:2)

隐藏StepperProgressTableViewCell.m

中的步进属性
 @interface StepperProgressTableViewCell ()

//@property (nonatomic) AYStepperView *stepperView;
@property (nonatomic) NSUInteger currentIndex;
@property (nonatomic) NSUInteger currentStep;
@property (nonatomic) UIView *containerView;

@end

StepperProgressTableViewCell.h中移动以下属性并检查

@property (nonatomic) AYStepperView *stepperView

然后将您的委托设置为stepperView;

cell.stepperView.delegate = self

答案 1 :(得分:2)

您需要在您的cell.h中声明您的stteperView属性,您的属性在.m中声明并且是私有的,您需要在.h中声明

StepperProgressTableViewCell.h

@interface StepperProgressTableViewCell : UITableViewCell

@property (nonatomic) AYStepperView *stepperView;

@end

之后,你可以在你的cellForRow

cell.stepperView.delegate= self

希望这有帮助