如何通过点击一个的UITableViewCell按钮来实现的UITableViewCell选择的影响

2019-11-04 14:16发布

我有一个列表视图控制器menuView。 在menuView上的UITableViewCell添加时在所述细胞中更按钮被录制。

这是很容易实现与单。 这里是代码:

@implementation ProductsOperationMenu
static ProductsOperationMenu *_instance;
+ (instancetype)sharedInstance{

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [[self alloc] initWithFrame:CGRectZero];
    });
    return _instance;
}


- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        [self setup];
    }
    return self;
}

ZBMyProductsCell.m

@implementation ZBMyProductsCell

- (void)awakeFromNib
{
    [super awakeFromNib];
    _operationMenu = [[ProductsOperationMenu alloc] initWithFrame: CGRectZero];
}

- (IBAction)operationButtonClick:(UIButton *)sender {
    if ([self.contentView.subviews containsObject:_operationMenu]) {
        _operationMenu.hidden = ![_operationMenu isHidden];
    } else{
        [self.contentView addSubview:_operationMenu];
        _operationMenu.hidden = NO;
    }

    [_operationMenu mas_makeConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(205);
        make.height.mas_equalTo(60);
        make.bottom.mas_equalTo(self.operationButton).offset(0);
        make.right.mas_equalTo(self.operationButton.mas_left).offset(-10);
    }];
}

我认为这是滥用单。 我想提高代码。

如果没有单,代码和效果:

@implementation ProductsOperationMenu
- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        [self setup];
    }
    return self;
}

我想我必须处理消息细胞之间发送。 当被点击一个单元的按钮,但其他的菜单视图必须躲起来。

我认为这是非常相似的细胞的选择。 当所选择的一种细胞,以前选择一个的效果驳回。

无或一个

因此,如何通过单击的UITableViewCell一个按钮实现的UITableViewCell选择的影响?

Answer 1:

让被点击包含电池的当前指数全球整数,并且当在单元中的任何按钮被点击的变化指标,并重新加载的tableView - 在cellForRow

 if(indexpath.row == index)
 {

    cell.menuView.isHidden = false
 }
 else
 {

    cell.menuView.isHidden = true
 }

编辑:

如果你想动画menuView的隐藏另一个选择时,那么你必须做出的tableview全球和访问他看到的细胞和具有持续时间的动画menuView的阿尔法



文章来源: How to achieve the effect of UITableViewCell selection by clicking a button in UITableViewCell?