隐藏UITableviewcell的UIButton

我的代码中有一个简单的关键问题。

当我按下我的编辑button(这是在导航栏上)我的桌面视图它需要我编辑UITableview的方法。 我想隐藏“我的手机”上的button和标签。

代码:

我正在像这样添加我的Button

// Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *currentCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; currentCell = nil; if (currentCell==nil) { currentCell=[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } BtnEmail=[UIButton buttonWithType:UIButtonTypeCustom]; //BtnEmail = (UIButton *)[currentCell viewWithTag: 3]; BtnEmail.frame=CGRectMake(265, 17, 25, 25); BtnEmail.tag=indexPath.row; //[BtnEmail setTitle:@"E-mail" forState:UIControlStateNormal]; [BtnEmail setBackgroundImage:[UIImage imageNamed:@"email.png"] forState:UIControlStateNormal]; [BtnEmail addTarget:self action:@selector(BtnEmail:) forControlEvents:UIControlEventTouchUpInside]; [currentCell.contentView addSubview:BtnEmail]; [currentCell.contentView bringSubviewToFront:BtnEmail]; return currentCell; } 

我的编辑button是这样的声明

编辑button:

 self.navigationItem.rightBarButtonItem = self.editButtonItem; 

并在编辑点击我的这个方法将调用。

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; [listTableView setEditing:editing animated:animated]; if(editing) { self.navigationItem.leftBarButtonItem.enabled = NO; //BtnEmail.frame=CGRectMake(355, 17, 25, 25); BtnEmail.hidden = TRUE; } else { self.navigationItem.leftBarButtonItem.enabled = YES; //BtnEmail.frame=CGRectMake(265, 17, 25, 25); BtnEmail.hidden = FALSE; } [super setEditing:editing animated:animated]; } 

在这种情况下,我的最后单元格button和标签会隐藏并不是所有的。 我需要隐藏我的单元格的所有UIButton。

就像我在桌上有3个单元格一样,它只会隐藏最后一个button

谢谢 。

你可以这样做,只需在cellForRow进行条件检查,并在编辑改变时重新加载表视图。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // Do your other stuff // Add this conditional check if (tableView.editing) { BtnEmail.hidden = YES; } else { BtnEmail.hidden = NO; } [currentCell.contentView addSubview:BtnEmail]; [currentCell.contentView bringSubviewToFront:BtnEmail]; return currentCell; } - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; [listTableView setEditing:editing animated:animated]; // Reload the table view [listTableView reloadData]; // Do your other stuff } 

但通过使用自定义单元格可以轻松创build该button。 在这里你一次又一次地添加button。 否则将button创build代码移动到if(cell == nil)

那是因为你在宣布

 BtnEmail.hidden = FALSE; 

在这种情况下,这是您在cellForRowAtIndexPath方法中最后分配的button。 尝试这样的事情:

  if(editing) { self.navigationItem.leftBarButtonItem.enabled = NO; //BtnEmail.frame=CGRectMake(355, 17, 25, 25); For(int i=0; i< [tableArray count]; i++) { UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]] ; UIButton *btn=(UIButton *)[cell viewWithTag:i]; btn.hidden = TRUE; } } else { self.navigationItem.leftBarButtonItem.enabled = YES; //BtnEmail.frame=CGRectMake(265, 17, 25, 25); For(int i=0; i< [tableArray count]; i++) { UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]] ; UIButton *btn=(UIButton *)[cell viewWithTag:i]; btn.hidden = FALSE; } }