我有一个带有一个按钮的表格视图单元格。单击单元格按钮时,该按钮具有一种检查按钮标签是否等于indexPath.row
的方法。然后,我试图更改图像。但它没有显示。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"FilterTableViewCell";
FilterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.cellBtn.tag = indexPath.row;
cell.radioImage.tag = indexPath.row;
[cell.cellBtn addTarget:self action:@selector(ButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
-(void)ButtonClicked:(UIButton*)sender
{
int rowNum = [(UIButton*)sender tag];
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:_currentSelectedIndex inSection:0];
FilterTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
if (sender.tag == rowNum) {
cell.radioImage.image = [UIImage imageNamed:@"selected.png"];
} else {
cell.radioImage.image = [UIImage imageNamed:@"unselected.png"];
}
}
此处的按钮图像未更改。我需要的是,每当我单击需要更改特定单元格图像的任何单元格时,其他单元格都应显示未选择的图像。而且,无论何时单击任何单元格,其图像都会更改为所选图像。我需要获取特定的单元格值,例如textlabel name,subtextlabel name。
我该如何做到这一点。这是什么问题?
已更新:
-(void)ButtonClicked:(UIButton*)sender
{
int rowNum = [(UIButton*)sender tag];
FilterTableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:rowNum inSection:0]];
if (sender.tag != _currentSelectedIndex) {
cell.radioImage.image = [UIImage imageNamed:@"selected.png"];
} else {
cell.radioImage.image = [UIImage imageNamed:@"unselected.png"];
}
}
答案 0 :(得分:0)
添加tableView的这两个委托:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
FilterTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
cell.radioImage.image = [UIImage imageNamed:@"unselected.png"];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
FilterTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
cell.radioImage.image = [UIImage imageNamed:@"selected.png"];
}
,然后将ButtonClicked
更改为:
-(void)ButtonClicked:(UIButton*)sender
{
int rowNum = [(UIButton*)sender tag];
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:_currentSelectedIndex inSection:0];
if (sender.tag == rowNum) {
[_tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
}
}
答案 1 :(得分:0)
我阅读了您的代码。我发现您在点击按钮的方法中犯了一个错误。
-(void)ButtonClicked:(UIButton*)sender
{
int rowNum = [(UIButton*)sender tag];
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:_currentSelectedIndex inSection:0];
FilterTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
if (sender.tag == rowNum) {
cell.radioImage.image = [UIImage imageNamed:@"selected.png"];
} else {
cell.radioImage.image = [UIImage imageNamed:@"unselected.png"];
}
}
您放置的如果条件始终返回true,因为首先将发件人的标记存储到rowNum,然后将两者进行比较。
条件总是正确的,并且将执行以下代码
cell.radioImage.image = [UIImage imageNamed:@"selected.png"];