实际上我正在使用用户输入创建条目集合。我想在哪里使用Check Box进行选择和选择。而不是复选框我已经使用了Button当用户选择单元格时按钮图像被更改,但是当一个选择再次在该单元格上没有发生任何事情。我试过这个。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if([[cell.btn backgroundImageForState:UIControlStateNormal]isEqual:[UIImage imageNamed:@"unchecked.png"]])
{
[cell.btn setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
}
在didDeselectRowAtIndexPath
中-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
if([[cell.btn backgroundImageForState:UIControlStateNormal]isEqual:[UIImage imageNamed:@"checked.png"]])
{
[cell.btn setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
}
}
请帮我解决我在哪里。
答案 0 :(得分:1)
You must be using data object whose data is used to show in table view just add one property in it isSelected . Lets name the array as "data".
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[data objectAtIndex:[indexPath row]].isSelected=YES;
[tableView reloadData];//or just row
}
And in didDeselectRowAtIndexPath
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[data objectAtIndex:[indexPath row]].isSelected=NO;
[tableView reloadData];//or just row
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//initial code
//addd this code
if([data objectAtIndex:[indexPath row]].isSelected){
//set checked image
}else {
//set unchecked image
}
}
答案 1 :(得分:0)
你必须设置单元格的属性
选择单元格时。
cell.selected = YES;
然后取消选择单元格
cell.selected = NO;
如果您的tableview重新加载,则必须在cellForRowAtIndexPath
方法
因为当您重新加载表时,您必须记住单元格选择状态。
在您的代码中,永远不会调用tableView didDeselect
方法
didDeselect
仅在您选择了分选的单元格时调用。
希望这会对你有所帮助