![](/img/trans.png)
[英]How can I reload all of data in tableview when I click cancel on search bar?(IOS/Swift)
[英]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.