隐藏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; } }