在swift中重新加载数据tableview

时间:2015-03-28 15:55:17

标签: swift

当我在UITableViewController中运行tableView.reloadData()时,它可以工作,但是当我调用一个函数来从另一个控制器更新这个tableview时,它不起作用。

//这种方式正常工作

func reloadTableView(){

    let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true ).first as String
    let db = Database("\(path)/db.sqlite");

    conversasArray.removeAll(keepCapacity: true);

    let stmt = db.prepare("SELECT ZNOME,ZUlTIMAMSG,ZIDMENSAGEM,ZIMAGE FROM ZUSUARIO,ZCHAT WHERE ZTELEFONE = ZTO")
    var objetoConversa : AnyObject = [];

    for row in stmt {
        objetoConversa = ["ZNOME":"\(row[0]!)", "ZUlTIMAMSG":"\(row[1]!)", "ZIDMENSAGEM":"\(row[2]!)", "ZIMAGE":"\(row[3]!)"];
        //Adiciona o objeto dentro do array de objetos.
        conversasArray.append(objetoConversa)
    }
    tableView.reloadData();

}

//但是当我这样做时,另一个文件tableView.reloadData()不起作用。

var a = TableViewController();

a.reloadTableView();

1 个答案:

答案 0 :(得分:0)

在重新加载tableview时使用tableview的save实例。

还在主线程中重新加载tableview。

扩展名UITableView {

/// Reload TableView in main thread

func reloadInMainThread() {

    DispatchQueue.main.async {

        self.reloadData()

    }
}

}