在TableViewCell中启用UIButton可以在更多单元格中启用

时间:2016-03-29 15:10:34

标签: ios objective-c uitableview uibutton

我有TableViewController我的自定义TableViewCell,每行有两个按钮,一个隐藏另一个不是,当我点击显示按钮时我想显示另一个按钮,我已经解决了这个问题,我的问题是,如果我向下滚动其他隐藏的按钮是因为Reuseidentifier而显示的。

如果只显示我选择的行中的按钮,我该怎么做。

希望我明白,如果没有,请问我。

谢谢大家。

3 个答案:

答案 0 :(得分:1)

当你滚动tableView时,剩下的按钮是隐藏的,因为你在cellForRowAtIndexPath中写了setHidden方法而没有放任何条件所以拿一个NSMutableArray并为它分配内存。无论您选择哪个索引,只需添加MutableArray.Then in cellForRowAtIndexPath如果该数组包含indexPath,则放置一个条件不要隐藏其他隐藏按钮。

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

  CutomTableView *cell=[tableView dequeueReusableCellWithIdentifier:@"CellId" forIndexPath:indexPath];
    [cell.show setTag:indexPath.row];
    [cell.show addTarget:self action:@selector(showButtonACtion:) forControlEvents:UIControlEventTouchUpInside];
NSIndexPath *selectedIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:0];
//self.selectedRow is NSMutable Array
   if ([self.selectedRow containsObject:selectedIndexPath]) {
        [cell.hideBtn setHidden:NO];
    }else{
        [cell.hideBtn setHidden:YES];
    }
    return cell;
}
-(void)showButtonACtion:(UIButton*)sender{
   NSIndexPath *selectedIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:0];
    [self.selectedRow addObject:myIP];
     [self.tableV reloadData];
    }

答案 1 :(得分:0)

当您单击特定按钮以显示另一个按钮时,只需保存该NSIndexpath。

例如, 如果单击第二行,则在NSMutableDicionary中添加值

[mutableDict setValue:@"YES" forKey:[NSString stringWithFormat:@"%@", indexPath.row]];

然后在cellForRowAtIndexPath方法中检查特定的indexPath。

每当你找到@" YES"对于特定行,实现所需的逻辑以显示或隐藏按钮。

希望这会对你有所帮助。

答案 2 :(得分:0)

-(IBAction)firstButton:(UIControl *)sender
{
        UIButton *button = (UIButton*)sender;
        NSIndexPath *myIP = [NSIndexPath indexPathForRow:sender.tag inSection:0];

        CustomCell *cell = (CustomCell*)[self.tableView cellForRowAtIndexPath:myIP];
       [cell.button2 setHidden:NO];.
}