2017-05-26 46 views
5

我使用swift 3工作macOS,我有一個普遍的問題。 在我的Storyboard中有兩個View Controller,每個View Controller都有一個tableview。不同的類一起工作

實施例: 視圖控制器A> VC_A.class 視圖控制器B> VC_B.class

兩個視圖控制器是一個拆分視圖控制器的元件。 現在我想通過拖放將VCA中的一行元素放到VCB中。這工作得很好,如果兩個VC都在一個類中。

,但現在我想它像下面(VC_A和VC_B.class)的示例分割

但如何控制VC_A在VC_B.class的IBOutlet中tblview?

+0

你是什麼意思「控制」?你爲什麼需要?例如, –

+0

。我想從類VC_B – Ghost108

+0

添加一個新的行到VC_A的tableview中更多細節:我試過這個教程:http://www.knowstack.com/swift-nstableview-drag-drop-in/兩個tableviews都在一個視圖控制器並使用一個類。我想知道,這兩個表視圖是在不同的視圖控制器(分割視圖)和代碼在兩個不同的類 – Ghost108

回答

4

您可以使用代表和協議。安裝程序與你的接口協議類編輯表格,例如

protocol EditableTableView { 
    func insertCell() 
} 

爲您的ViewControllers的,將它們設置爲堅持這一協議,實現的insertCell功能,並且還添加一個委託指針。

class ViewControllerA : EditableTableView { 

    func insertCell() { 
    ... add your code to insert a cell into VC A... 
    } 

    weak var otherTableViewDelegate : EditableTableView? 
} 

class ViewControllerB : EditableTableView { 

    func insertCell() { 
    ... add your code to insert a cell into VC B... 
    } 

    weak var otherTableViewDelegate : EditableTableView? 
} 

在你父母分開的VC,你可以設置代理指針,以便它們指向其他視圖控制器

viewControllerA.otherTableViewDelegate = viewControllerB 
viewControllerB.otherTableViewDelegate = viewControllerA 

現在,每當你想插入另一個控制器單元可以調用

self.otherTableViewDelegate?.insertCell() 
+0

和哪裏是作爲一個IBoutlet分配每個表視圖? – Ghost108

+0

我猜每個VC都會有一個。你爲什麼需要IBOutlet?是否只是連接故事板中的表格視圖設置 – Spads

+0

是的,將其與故事板連接 – Ghost108

相關問題