簡體   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