触摸表格视图单元格内的按钮时获取对象属性的值

时间:2015-05-24 19:13:48

标签: ios swift

我有自定义单元格的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"所选对象的然后根据其当前值更新它,然后保存对象并重新加载表视图。

比你

2 个答案:

答案 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...   
}