繁体   English   中英

iOS swift tableview触摸按钮时如何重新加载数据

[英]iOS swift tableview how can I reload the data when I touch button

我创建了一个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)
    }
}

因此,当我在表格视图中触摸按钮(如果有按钮)时,如何重新加载数据? 它是不同的文件,一个是Viewcontroller.swift,另一个是tableviewCell.swift,我该怎么办?

创建这样的协议:

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对象中调用协议方法。 在UITableViewCell类中为按钮创建IBAction并调用:

delegate?.requestReloadTable()

在上面的代码中,requestReloadTable是您的控制器类中的方法,在确认控制器符合我们之前制定的协议时,必须重写该方法:

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

为按钮创建IBOutlet,您想更新表格。 并执行以下代码:

self.tableView.reloadData()

例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM