自定义UItableViewCell与PureLayout和动态数量的按钮

时间:2015-09-06 07:49:04

标签: ios uitableview pure-layout

我创建了一个自定义UITableViewCell,它使用以下initWithStyle显示水平访问中的动态按钮数

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        emailBtn = [UIButton newAutoLayoutView];
        [emailBtn setImage:[UIImage imageNamed:@"emailBtn"] forState:UIControlStateNormal];
        [emailBtn setImage:[UIImage imageNamed:@"emailBtn"] forState:UIControlStateSelected];
        [emailBtn addTarget:self action:@selector(emailBtnPressed:) forControlEvents:UIControlEventTouchUpInside];

        facebookBtn = [UIButton newAutoLayoutView];
        [facebookBtn setImage:[UIImage imageNamed:@"fbBtn"] forState:UIControlStateNormal];
        [facebookBtn setImage:[UIImage imageNamed:@"fbBtn"] forState:UIControlStateSelected];
        [facebookBtn addTarget:self action:@selector(facebookBtnPressed:) forControlEvents:UIControlEventTouchUpInside];

        twitterBtn = [UIButton newAutoLayoutView];
        [twitterBtn setImage:[UIImage imageNamed:@"twBtn"] forState:UIControlStateNormal];
        [twitterBtn setImage:[UIImage imageNamed:@"twBtn"] forState:UIControlStateSelected];
        [twitterBtn addTarget:self action:@selector(twitterBtnPressed:) forControlEvents:UIControlEventTouchUpInside];

        linkedinBtn = [UIButton newAutoLayoutView];
        [linkedinBtn setImage:[UIImage imageNamed:@"linkedInBtn"] forState:UIControlStateNormal];
        [linkedinBtn setImage:[UIImage imageNamed:@"linkedInBtn"] forState:UIControlStateSelected];
        [linkedinBtn addTarget:self action:@selector(linkedinBtnPressed:) forControlEvents:UIControlEventTouchUpInside];

        self.contentView.backgroundColor = [UIColor orangeColor];

        [self.contentView addSubview:emailBtn];
        [self.contentView addSubview:facebookBtn];
        [self.contentView addSubview:twitterBtn];
        [self.contentView addSubview:linkedinBtn];


        self.btnsArray = @[emailBtn,facebookBtn,twitterBtn,linkedinBtn];
        [self setNeedsUpdateConstraints]; // bootstrap Auto Layout
    }

    return self;
}

效果很好并且它在水平访问中显示4个按钮对齐,我面临的问题是我需要根据从API检索的数据使这个按钮动态化,例如,如果没有Facebook链接,Cell应该只显示3个按钮....

的问题
[self setNeedsUpdateConstraints]; // bootstrap Auto Layout
在配置单元格数据以确定按钮及其链接的真实数量之前,在初始化单元格时调用

对于目前的情况有没有建议?

0 个答案:

没有答案