2015-03-28 3 views
0

Когда я запускаю tableView.reloadData() в UITableViewController, он работает, но когда я вызываю функцию для обновления этого представления таблицы с другого контроллера, это не сработает.Обновить данные tableview в swift

// Этот способ работает нормально

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

Поскольку 'вар а = TableViewController()' создает новый и совершенно не связан табличный экземпляр контроллера ... Что вы думаете, что делает? –

+0

Проверьте этот вопрос/ответ: http://stackoverflow.com/questions/25921623/how-to-reload-tableview-from-another-view-controller-in-swift – Shades

+0

Я думал, что это принесет текущий экземпляр TableViewController (), Я новичок, и я все еще участвую в программе SWIFT, спасибо за решение. –

ответ

0

Используйте save instance of tableview во время перезагрузки tableview.

А также Обновить таблицу в основной теме.

расширение UITableView {

/// Reload TableView in main thread 

func reloadInMainThread() { 

    DispatchQueue.main.async { 

     self.reloadData() 

    } 
} 

}

+0

Хотя это правда, это не проблема в этом случае, поскольку не используется отдельная потоковая передача. –

+0

Убедитесь, что у таблой таблицы есть тот же экземпляр u. –

Смежные вопросы