创建后快速刷新TableView

Mar*_*cus 2 uitableview ios swift swift2

在swift中我有两个视图控制器.一个是tableView并显示数组中的数据.在函数调用上,另一个视图控制器调用tableView并使用表视图的新数据传递参数.即使我更新了buckets从TableView获取数据的数组也没有更新.如何让程序重新加载其数据?

表格视图

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()
    } 
}
Run Code Online (Sandbox Code Playgroud)

我可以验证从其他视图控制器调用updateBuckets.

其他视图控制器

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

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

}
Run Code Online (Sandbox Code Playgroud)

小智 5

尝试使用tableView?.beginUpdates()tableView?.endUpdates()不是 - 我发现tableView?.reloadData()有时可能对数据源更新很挑剔.

否则,请确保您正在调用updateBuckets()正确的实例BucketTableViewController(); 看起来你在viewDidLoad()中实例化了一个新实例,而不是改变现有实例的内容(正如你可能会做的那样).