代码之家  ›  专栏  ›  技术社区  ›  dengApro

如何通过单击UITableViewCell中的按钮来实现UITableViewCell选择的效果?

  •  1
  • dengApro  · 技术社区  · 6 年前

    我在列表视图控制器中有一个菜单视图。录制单元格中的“更多”按钮时,在UITableViewCell上添加的菜单视图。

    imageHere

    使用singleton很容易实现。以下是代码:

    @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);
        }];
    }
    

    我认为这是独生子女虐待。我想改进代码。

    没有singleton,代码和效果:

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

    imageTwo

    我想我必须处理手机间的信息发送。单击一个单元格的按钮时,其他单元格的菜单视图必须隐藏。

    我认为这与cell的选择非常相似。选择一个单元格时,前一个选定单元格的效果将被解除。

    无或一个

    那么,如何通过单击UITableViewCell中的按钮来实现UITableViewCell选择的效果呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Shehata Gamal    6 年前

    生成一个全局整数,该整数包含被单击单元格的当前索引,当单击单元格中的任何按钮时,更改索引并重新加载tableView(在cellForRow中)

     if(indexpath.row == index)
     {
    
        cell.menuView.isHidden = false
     }
     else
     {
    
        cell.menuView.isHidden = true
     }
    

    编辑:

    如果要在选择另一个菜单视图时设置隐藏菜单视图的动画,则必须将tableview设为全局视图,并访问其可见单元格,并根据持续时间设置菜单视图的alpha动画