在 Cell 上隐藏 MenuView

Hide MenuView on Cell

我在单元格上有一个按钮 单击此按钮我想打开一个视图,效果很好。现在的问题是当我们点击下一个单元格按钮时,我之前的视图不会隐藏。 这是我正在尝试两种方式但不起作用的方法。请帮忙。

      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
            static NSString *simpleTableIdentifier = @"CustumCellTableViewCell";

            CustumCellTableViewCell *cell = (CustumCellTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
            if (cell == nil)
            {
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustumCellTableViewCell" owner:self options:nil];
                cell = [nib objectAtIndex:0];
            }

             cell.touchButton.tag =indexPath.row;
            [cell.touchButton addTarget:self action:@selector(menuButtonClick:) forControlEvents:UIControlEventTouchUpInside];
            cell.menuView.hidden = YES;


            return cell;
        }



        - (void) menuButtonClick:(id) sender

        {

            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];
                CustumCellTableViewCell *cell=(CustumCellTableViewCell *)[table cellForRowAtIndexPath: indexPath];

            if (cell.menuView.hidden) {
                cell.menuView.hidden = NO;
            } else {
                cell.menuView.hidden = YES;
            }
    1 method
    for ( CustumCellTableViewCell *cell1 in table.visibleCells ) {

            NSLog(@"%@",cell1);
            if (cell1 != cell) {
                cell.menuView.hidden = YES;
            }

        }

2 method

for (NSIndexPath *indexpaths in  [table indexPathsForVisibleRows] ) {

        if (indexpaths == indexPath) {

            cell.menuView.hidden = NO;
        }
        else
        {
           cell.menuView.hidden = YES;
        }


    }


         }

您正在使用当前选定的单元格。如果您想隐藏最后选择的单元格菜单,则必须存储 最后选择的单元格索引

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:lastSelectedCell inSection:0];
        CustumCellTableViewCell *cell=(CustumCellTableViewCell *)[table cellForRowAtIndexPath: indexPath];
cell.menuView.hidden = YES;

/*
 your code goes here
*/

lastSelectedCell = [sender tag];
    [for ( CustumCellTableViewCell *cell1 in \[table visibleCells\] ) {


            if (cell1 != cell) {
                cell1.menuView.hidden = YES;
            }
            else
            {
                cell1.menuView.hidden = NO;
            }

        }][1]


  [1]: http://

您可以使用 indexPath.row 添加单元格标签并比较 cell.tag 是否等于 [发件人标签]。还要检查您的发件人标签值是否正确。

   - (void) menuButtonClick:(id) sender
    {

    [table reloadData];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];

    CustumCellTableViewCell *cell=(CustumCellTableViewCell *)[table cellForRowAtIndexPath: indexPath];

    if(cell.tag==[sender tag]){

          cell.menuView.hidden = NO;
     } else {

          cell.menuView.hidden = YES;
     }

  }