2017-01-31 28 views
0

我正在使用Swift 3,Xcode 8.2。Swift 3 - 如何從另一個視圖插入TableViewCells?

我想弄清楚如何從我的選項卡式視圖控制器的另一個選項卡插入單元格到我的表視圖。

MyTableView

class MyTableView: UITableViewController { 

    var items = ["Item 1", "Item 2", "Item 3"] 

    ... 

    func insertCell() { 
     items.append("Item \(items.count + 1)") 
     tableView.reloadData() 
    } 

如果我創建一個表視圖頁上欄按鈕的項目,我可以成功地插入項目,沒有問題。這是當我試圖從另一個視圖控制器觸發它,什麼都沒有發生。

另一個選項卡

@IBAction func triggerInsert(_ sender: Any) { 
    //MyTableView().insertCell() // this doesn't work 

    //MyTableView().items.append("Item") // these two lines don't work either 
    //MyTableView().tableView.reloadData() 

    // also tried setting a boolean in here to be read from MyTableView but that didn't work either 
} 

我不太知道該怎麼做了「正確」的方式,這是。任何幫助將不勝感激。

回答

2

問題是這樣的表達你不斷嘗試使用:

MyTableView() 

創建一個全新的,獨立的表視圖控制器。但這顯然不是你想要做的。您想與現有的表格視圖控制器通話,就像您說的那樣,它是標籤欄控制器中的另一個選項卡。

例如,如果MyTableView是第一標籤和OtherViewController是選項卡,然後OtherViewController可能會說:

self.tabBarController!.viewControllers![0] as! MyTableView 

...作爲的方式得到的一個參考現有的表視圖控制器。

+0

這就是我所需要的。謝謝! – noblerare

+0

沒問題。我希望你也能理解這裏的一般教訓。 – matt

相關問題