如何处理UITableView每行中每个按钮的按钮单击

时间:2015-04-19 22:05:46

标签: ios uitableview swift

我有一个UITableView(每行有一个名为CellModelAllNames的Custom类)。每行都有一个标签和一个按钮。

我的问题是:当btn_addRecording(即点击任意/每行的' +'按钮时,如何获取{{} 1}},显示标签名称,并在ViewController中显示弹出窗口。我想在弹出窗口中获取更多信息,然后将所有信息(包括lbl_name.text)保存到数据库中。

enter image description here

每个行布局的CellModelAllNames

lbl_name

这是我的ViewController的代码:

import UIKit


class CellModelAllNames: UITableViewCell {

@IBOutlet weak var lbl_name: UILabel!

@IBOutlet weak var btn_addRecording: UIButton!


@IBAction func btnAction_addRecording(sender: AnyObject) {

    println("clicked on button in UITableViewCell")

}
override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}

func setCell(setBabyName: String) {
    self.lbl_name.text = setBabyName
}
}

2 个答案:

答案 0 :(得分:1)

您可以使用标准UIKit方法获取单元格及其数据:

func tappedButton(sender : UIButton) {
   let point = sender.convertPoint(CGPointZero, toView: self.tableView)
   let indexPath = self.tableView.indexPathForRowAtPoint(point)!
   let name = arrayOfNames[indexPath.row]
   // do something with name
}

答案 1 :(得分:1)

您可以在ViewController中添加按钮操作

1)在您的函数cellForRowAtIndexPath中将按钮的tag指定为index(即indexPath.row)

cell.btn_addRecording.tag = indexPath.row

2)为按钮添加目标和操作:

cell.btn_addRecording.addTarget(self, action: "buttonPressed:", forControlEvents: .TouchUpInside)

3)在ViewControler中添加动作(即在数据库中保存信息)

func buttonPressed(button: UIButton!)
{
     // Add your code here
     let name = arrayOfNames[button.tag]
}