不同的班级一起工作

时间:2017-05-26 09:28:16

标签: macos swift3 xcode8

我使用swift 3 for macOS,我有一个普遍的问题。 在我的Storyboard中有两个View Controller,每个View Controller都有一个tableview。

实施例: 视图控制器A&gt; VC_A.class <视图控制器B> VC_B.class

两个视图控制器都是一个拆分视图控制器的元素。 现在我想通过拖放将VC A中的一行元素放到VC B.如果两个VC都在一个类中,这样可以正常工作。

但现在我想像下面的例子(VC_A和VC_B.class)

那样拆分它

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

1 个答案:

答案 0 :(得分: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()