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

时间:2018-01-19 12:22:49

标签: ios objective-c uitableview singleton

我在列表视图控制器中有一个menuView。当单元格中的更多按钮被录音时,在UITableViewCell上添加了menuView。

imageHere

使用单身人士很容易实现。这是代码:

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

imageTwo

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

我认为它与细胞的选择非常相似。当选择一个单元格时,先前选择的单元格效果被取消。

无或一个

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

1 个答案:

答案 0 :(得分:1)

创建一个全局整数,其中包含当前单击的单元格索引以及单击单元格中的任何按钮时更改索引并重新加载tableView - in cellForRow

 if(indexpath.row == index)
 {

    cell.menuView.isHidden = false
 }
 else
 {

    cell.menuView.isHidden = true
 }

编辑:

如果您想要在选择另一个时隐藏menuView,则必须使tableview全局并访问其可见单元格并使用持续时间为menuView设置动画