iOS swift tableview当我触摸按钮

时间:2018-04-16 12:52:42

标签: ios swift tableview

我创建了一个tableview,我有一个像这样的对象:

public class data: NSObject {
    var name :String = ""
    var number :Double = 0
    var price : Double = 0
    var sum:Double = 0
}

我创建了一个数组:

var data1 = [data]()

我有一个表格单元格:

@IBOutlet var a0: UITextField!
@IBOutlet var a1: UITextField!
@IBOutlet var a2: UITextField!
@IBOutlet var a3: UITextField!

var data1 : data? {
    didSet {

        var a00 = data1?.name
        var a11 = data1?.number
        var a22 =  data1?.price

        var a33 = a11! * a22!
        a0.text = a00
        a1.text = String(a11!)
        a2.text =  String(a22!)
        a3.text =  String(a33)
    }
}

那么,当我在tableview中触摸按钮(如果我有一个按钮)时,如何重新加载数据?它是不同的文件,一个是Viewcontroller.swift,另一个是tableviewCell.swift,我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

创建一个这样的协议:

protocol ParentControllerDelegate{
func requestReloadTable()
}

在TableViewCell类中:

class ProjectCell: UITableViewCell{

var parentDelegate: ParentControllerDelegate?
// And whatever other things you require in the UITableViewCellClass
}

现在,当您使TableViewCell将Controller类指定为委托时:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "TableCellID") as! ProjectCell
    cell.parentDelegate = self
    }

此时,您可以从UITableViewCell类调用Controller对象中的protocol方法。 在UITableViewCell类中为您的按钮创建一个IBAction并调用:

delegate?.requestReloadTable()

在上面的代码中,requestReloadTable是控制器类中的一个方法,当你根据我们之前制作的协议确认控制器时,你必须覆盖它:

extension HomeController: ParentControllerDelegate{
func requestReloadTable() {
    self.tableView.reloadData()
}
}

答案 1 :(得分:0)

为按钮创建IBOutlet,您可以更新表格。 并在行动中提出下一个代码:

self.tableView.reloadData()

EX:

@IBAction func upDateTable(_ sender: Any) {
           self.tableView.reloadData()
    }