在其他button按下uitableview隐藏单元格中的button

想知道如何获得UITableView中每个单元格的所有项目。 我的问题是,我想要隐藏2个单元格时select第三个。

我的细胞的例子

当我按下button1时,button2和3必须隐藏。 我试图做的是(在cellForRowAtIndexPath):

 AVMMovieButton *settings = (AVMMovieButton *)[cell viewWithTag:228]; [settings addTarget:self action:@selector(selectSettings:) forControlEvents:UIControlEventTouchUpInside]; settings.tag = indexPath.row; AVMMovieButton *playButton = (AVMMovieButton *)[cell viewWithTag:134]; [playButton setStore:oneItem]; [playButton addTarget:self action:@selector(playMovie:) forControlEvents:UIControlEventTouchUpInside]; playButton.tag = indexPath.row; AVMMovieButton *down = (AVMMovieButton *)[cell viewWithTag:282]; AVMMovieButton *del = (AVMMovieButton *)[cell viewWithTag:161]; [settings setSelected:!settings.isSelected]; if (settings.isSelected) { NSLog(@"SELECTED!"); down.hidden = YES; del.hidden = YES; downLabel.hidden = YES; delLabel.hidden = YES; // [self performSelector:@selector(playButtonShow) withObject:nil afterDelay:0.3]; playButton.hidden = NO; } else { NSLog(@"UNSELECTED!"); playButton.hidden = YES; down.hidden = NO; del.hidden = NO; downLabel.hidden = NO; delLabel.hidden = NO; NSLog(@"play button %d",playButton.hidden); } 

然后我添加了select我的“设置”button的方法:

 -(void)selectSettings:(AVMMovieButton *)sender { [sender setSelected:!sender.isSelected]; NSLog(@"you just select button"); } 

但它不工作!

其实NSLog(@"you just select button"); 作品,但从来没有隐藏button。

我应该怎么做才能拿到我的button并隐藏它们?

解决了:

我所需要做的就是创build自定义的UITableViewCell类,然后像Jay Gajjar和Akhilrajtr所说的那样访问我的单元格。 我刚用我的方法select/取消select我的button。

我得到了什么:

 -(void)selectSettings:(AVMMovieButton *)sender { AVMMovieButton *settings = (AVMMovieButton *)sender; CGPoint pointInTable = [settings convertPoint:settings.bounds.origin toView:readyTable]; NSIndexPath *indexPath = [readyTable indexPathForRowAtPoint:pointInTable]; AVMMovieCell *cell=(AVMMovieCell *)[readyTable cellForRowAtIndexPath:indexPath]; if (cell.settingsButton.isSelected) { NSLog(@"SELECTED!"); cell.downloadButton.hidden = YES; cell.deleteButton.hidden = YES; cell.downLabel.hidden = YES; cell.delLabel.hidden = YES; cell.playButton.hidden = NO; } else { NSLog(@"UNSELECTED!"); cell.playButton.hidden = YES; cell.downloadButton.hidden = NO; cell.deleteButton.hidden = NO; cell.downLabel.hidden = NO; cell.delLabel.hidden = NO; NSLog(@"play button %d",cell.playButton.hidden); } [settings setSelected:!settings.isSelected]; } 

希望这可以帮助别人!

尝试这个,

 -(void)selectSettings:(AVMMovieButton *)sender{ [sender setSelected:!sender.isSelected]; CGPoint pointInTable = [sender convertPoint:sender.bounds.origin toView:_tableView]; NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:pointInTable]; [_tableView beginUpdates]; [_tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; [_tableView endUpdates]; NSLog(@"you just select button"); } 

当Table重载时, cellForRowAtIndexPath被调用。 在你的情况下,你需要做的是:

 - (void)button3Method:(id)sender { // Begin UITableView Update [self.tableView beginUpdates]; NSIndexPath *indexPath = // Get cell indexpath for the selected row. // Logic for getting the UITableViewCell on which you want hide two buttons. // Logic for hiding those two buttons // Below line performs reloading of particular UITableViewCell. [self.tableView reloadRowsAtIndexPaths:@[indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone]; // End UITaleView Update [self.tableView endUpdates]; } 

让我知道,如果这对你有用。 祝你好运。

在cellForRowAtIndexPath中:

 [cell. settings addTarget:self action:@selector(selectSettings:) forControlEvents:UIControlEventTouchUpInside]; cell. settings.tag=600+indexPath.row; 

在buttonIBAction中:

 -(void) selectSettings:(id) sender{ UIButton *btn=(UIButton *)sender; cellMoreButtonIndex=btn.tag; YOURCELL *cell=(YOURCELL *)[self.contentTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:btn.tag-600 inSection:0]]; [settings setSelected:!settings.isSelected]; if (settings.isSelected) { NSLog(@"SELECTED!"); down.hidden = YES; del.hidden = YES; downLabel.hidden = YES; delLabel.hidden = YES; // [self performSelector:@selector(playButtonShow) withObject:nil afterDelay:0.3]; playButton.hidden = NO; }else { NSLog(@"UNSELECTED!"); playButton.hidden = YES; down.hidden = NO; del.hidden = NO; downLabel.hidden = NO; delLabel.hidden = NO; NSLog(@"play button %d",playButton.hidden); } } 

添加一个自定义的单元格和处理button单击事件,并在单元级别隐藏/取消隐藏function