簡體   English   中英

創建后快速刷新TableView

[英]Swift Refresh TableView after creation

我有兩個視圖控制器。 一個是tableView,它顯示數組中的數據。 在調用函數時,另一個視圖控制器將調用tableView,並為表視圖傳遞帶有新數據的參數。 即使我更新了從TableView中獲取數據的數組buckets ,也不會更新。 如何獲取程序以重新加載其數據?

表格視圖

import Foundation
import UIKit
class BucketTableViewController: UITableViewController {
    var buckets = ["A", "B", "C"]
    override func viewDidLoad() {
    }
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return buckets.count
    } 
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        cell.textLabel?.text = buckets[indexPath.row]
        return cell
    }
    func updateBuckets(newBucket: NSArray) {
        buckets = newBucket as! [String]
        self.tableView?.reloadData()
    } 
}

我可以驗證是否從另一個視圖控制器調用了updateBuckets。

其他視圖控制器

    var bigArray = ["M", "A", "R", "C"]

override func viewDidLoad() {
    super.viewDidLoad()
    let buckets = BucketTableViewController()
    buckets.updateBuckets(bigArray)

}

嘗試改用tableView?.beginUpdates()tableView?.endUpdates() -我發現tableView?.reloadData()有時對數據源更新有些挑剔。

否則,請確保在正確的BucketTableViewController()實例上調用updateBuckets() BucketTableViewController() 好像您在viewDidLoad()中實例化了一個新實例,而不是更改現有實例的內容一樣(可能會這樣做)。

這行就在這里:

let buckets = BucketTableViewController()

您正在創建一個全新的BucketTableViewController實例並更新其存儲桶。 這不會導致現有的BucketTableViewController進行更新。 您需要弄清楚如何獲取對現有視圖控制器的引用並進行更新。

我會為您推薦與在此答案中所做的相同的事情: 從其他文件更新表視圖-無法在沒有參數的情況下調用'reloadData'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM