【发布时间】:2018-09-11 16:41:23
【问题描述】:
我正在开发一个应用程序,其中 UITableViewCell 中 UIButton 的图像应该在 click 时发生变化,我已经在自定义单元格。现在,我可以更改按钮的图像,但当我向下滚动时,它也会更改其他几个按钮的图像(因为在滚动时调用cellForRowAtIndexPath:)。
这是代码。
- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
_cell = (ListTableViewCell *)[self.tblList dequeueReusableCellWithIdentifier:@"listTableViewCell"];
if (_cell == nil) {
_cell = [[ListTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"listTableViewCell"];
} else {
_cell.imgIcon.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[_arrImages objectAtIndex:indexPath.row]]];
_cell.lblList.text = [NSString stringWithFormat:@"%@",[_arrNames objectAtIndex:indexPath.row]];
_cell.btnList.tag = indexPath.row;
if (_cell.btnList.tag == indexPath.row) {
[_cell.btnList addTarget:self action:@selector(btnPressedMethodCall:) forControlEvents:UIControlEventTouchUpInside];
}
}
return _cell;
}
- (void) btnPressedMethodCall:(UIButton*)sender {
if ([sender isSelected]) {
[sender setImage:[UIImage imageNamed:@"red_image.png"] forState:UIControlStateSelected];
[sender setSelected:NO];
} else {
[sender setImage:[UIImage imageNamed:@"black_image.png"] forState:UIControlStateNormal];
[sender setSelected:YES];
}
}
有人能告诉我如何解决这个问题吗?感谢任何帮助。
【问题讨论】:
-
tableview 需要一个数据源来显示数据。更改按钮属性后,需要更新表格数据源,以便表格视图正常显示。
-
请在您的操作上重新加载 uitableviewcell - btnPressedMethodCall
-
最初设置两个状态图像,然后在按钮单击时调用
[sender setSelected:NO/YES]。您还需要在cellForRowAtIndexPath中处理此问题,因为此方法会调用滚动。
标签: ios objective-c uitableview