macos - 不同的类(class)一起工作

标签 macos swift3 xcode8

我在 macOS 上使用 swift 3,我有一个一般性问题。
在我的 Storyboard中有两个 View Controller ,每个 View Controller 都有一个表格 View 。

例子:
查看 Controller A > VC_A.class
查看 Controller B > VC_B.class

两个 View Controller 都是一个 Split View Controller 的元素。
现在我想通过拖放将一行元素从 VC A 放到 VC B 中。这很好用,如果两个 VC 都在一个类中。

但现在我想像下面的例子一样拆分它(VC_A 和 VC_B.class)

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

最佳答案

您可以为此使用委托(delegate)和协议(protocol)。使用您的界面设置协议(protocol)类以编辑表格,例如

protocol EditableTableView {
    func insertCell()
}

对于您的两个 ViewController,将它们设置为遵守此协议(protocol),实现 insertCell 函数并添加一个委托(delegate)指针。
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 中,您可以设置委托(delegate)指针,以便它们指向另一个 View Controller
viewControllerA.otherTableViewDelegate = viewControllerB
viewControllerB.otherTableViewDelegate = viewControllerA

现在,每当您想在另一个 Controller 中插入一个单元格时,您都可以调用
self.otherTableViewDelegate?.insertCell()

关于macos - 不同的类(class)一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198111/

相关文章:

objective-c - 雪豹的默认窗口阴影尺寸?

excel - 如何在 MAC 上使用 VBA 从 Excel 16 打开工作簿?

ios - 关闭 Popover 后更新第一个 View

ios - 使用 xcode 8 上传后,应用程序未显示在事件选项卡中

ios - 在 iphone 5 设备中运行时的 Apple Mach-O 链接器 (ld) 错误组

macos - Mac OS X - 应用程序演示文件的最佳位置?

python 导入错误名称 lru_cache

ios - 无法在 swift 3 中获取 jsondata?

arrays - 索引 4 超出范围 [0 .. 3 ]' ... Terminating app due to uncaught exception ' NSRangeException'

ios - 无法构建 Objective c 模块