我有自定义单元格的tableview。在每个单元格上有两个按钮。
我正在使用核心数据来填充tableview。每个获取的对象都有一个属性" prioridad" 其中一个按钮应该更新属性的值。
我需要知道的是获得" prioridad"的当前价值。触摸按钮时所选行对象的位置。
我在cellForRowAtIndexPath方法中包含了以下代码:
...
// subir prioridad
let image13 = UIImage(named: "subir") as UIImage?
let button13 = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
button13.frame = CGRectMake(260, 35, 15, 15)
button13.setImage(image13, forState: .Normal)
cell.addSubview(button13)
button13.tag = indexPath.row;
button13.addTarget(self, action: Selector("selectItem:"), forControlEvents: UIControlEvents.TouchUpInside)
...
然后我创建了函数:
//receptor de subir prioridad
func selectItem(sender:UIButton){
println("Selected item in row \(sender.tag)")
}
我需要更新属性的值" prioridad"所选对象的然后根据其当前值更新它,然后保存对象并重新加载表视图。
比你
答案 0 :(得分:1)
我会这样做有点不同。
在UITableViewCell
子类上,只要按下按钮,就可以将块属性添加到运行的单元格中。然后,在cellForRowAtIndexPath
中,您可以创建块并让块更新Core Data对象。
在您的单元子类上,您将拥有:
@property (nonatomic, copy) void(^buttonTappedBlock)();
然后,在cellForRowAtIndexPath
你会做:
cell.buttonTappedBlock = ^{
object.prioridad++;
[tableView reloadData];
};
或类似的东西。
答案 1 :(得分:0)
经过长时间的搜索,我找到了解决问题的方法。
我想与您分享:
func selectItem(sender:UIButton){
println("Selected item in row \(sender.tag)")
//update the tableView
let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0)
let fetchedObject: AnyObject = self.fetchedResultsController.objectAtIndexPath(indexPath)
var prioridad = fetchedObject.valueForKey("prioridad") as! String
println (prioridad)
...and here I will update prioridad and reload the tableview...
}