我在每个单元格中使用带有复选框按钮的UITableView。当用户点击该单元格或按钮时,该按钮的图像必须更改为“已选择”按钮。图片。但是当我点击任何单元格或按钮时,图像不会改变。
这是我的表格代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell : categoryCell = tableView.dequeueReusableCellWithIdentifier("categoryCell") as! categoryCell
let dic : NSDictionary = categoryitem.objectAtIndex(indexPath.row) as! NSDictionary
cell.category_name.text = dic.valueForKey("category_name") as? String
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return categoryitem.count
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell : categoryCell = tableView.dequeueReusableCellWithIdentifier("categoryCell") as! categoryCell
cell.category_button.setImage(UIImage(named: "check_checkbox"), forState: UIControlState.Normal)
let dic : NSDictionary = categoryitem.objectAtIndex(indexPath.row) as! NSDictionary
print(dic.valueForKey("category_id") as! String)
}
答案 0 :(得分:1)
将didSelectRowAtIndexPath中的代码更改为
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell : categoryCell = tableView.cellForRowAtIndexPath(indexPath) as! categoryCell
cell.category_button.setImage(UIImage(named: "check_checkbox"), forState: UIControlState.Normal)
let dic : NSDictionary = categoryitem.objectAtIndex(indexPath.row) as! NSDictionary
print(dic.valueForKey("category_id") as! String)
}
您犯了错误
let cell : categoryCell = tableView.dequeueReusableCellWithIdentifier("categoryCell") as! categoryCell
将返回单元格以供重用,但是您需要访问用户点击的indexPath上当前加载的单元格:)所以请使用cellForRowAtIndexPath。 cellForRowAtIndexPath返回indexPath
中当前加载的单元格答案 1 :(得分:0)
您需要在cellForRowAtIndexPath方法中将目标添加到按钮复选框 在按钮回拨中,您可以更改图像。像这样
[cell.checkButton addTarget:self action:@selector(buttonclick:) forControlEvents:UIControlEventTouchUpInside];
checkbutton.tag=indexpath.row;
-(void)buttonclick:(id)sender
{`
// you can change your image here..
}