ios - 在 IB 中,无法将 IBOutlet 委托(delegate)连接到另一个 View Controller ?

标签 ios xcode delegates interface-builder storyboard

我有一个 View Controller ,它的 View 之一是一个容器 View (在 IB Storyboard中),它嵌入了一个 TableView Controller ,而该 View Controller 又具有一个容器 View ,该容器 View 嵌入了另一个 View Controller 。在最后一个 View Controller 中,我设置了一个委托(delegate)协议(protocol),它具有一个弱综合委托(delegate)属性作为 IBOutlet。第一个 View Controller 是我想从最后一个 View Controller 接收委托(delegate)方法的对象,我向它添加了协议(protocol) <...>。

问题是我在 Storyboard (或其他方式)中没有想出一种方法将最后一个 View Controller 的 IBOutlet 委托(delegate)链接到遵循协议(protocol)的第一个 View Controller ,以便最后一个可以发送第一条消息。我以为我可以拖放(使用控制键)但我发现的只是目标上的 segue 选项。似乎即使委托(delegate)出现在导出连接窗口中,它也不会连接到我项目中的任何 View Controller 。

任何 View Controller 都不能成为另一个协议(protocol)的委托(delegate)吗?并且可以在IB中链接?如果我不能用 IB 做到这一点,我不知道如何让另一个 VC 成为上游的委托(delegate)。

如有任何建议,我们将不胜感激。谢谢。

最佳答案

您不能在 View Controller 之间连接 IBOutlets。您需要在代码中执行此操作。您必须通过 childViewController 链才能从第一个 Controller 到最后一个 Controller ——如果我正确理解您的结构,从第一个 View Controller 开始:

    LastController *last =  ((UIViewController *)self.childViewControllers[0]).childViewControllers[0];
    last.delegate = self;

关于ios - 在 IB 中,无法将 IBOutlet 委托(delegate)连接到另一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15582613/

相关文章:

ios - 在 Documents 目录中加载下载的图像(IOS 10、xcode 8.1、Swift 3.0)

c# - 无法将 StringElement.Visible 绑定(bind)到 ViewModel 中的 bool 属性

桌面 Safari 的“开发”菜单中缺少带有 iOS11 (Xcode 9) 设备的 iOS 模拟器

ios - 图像不适合 ImageView

ios - 如何在 Swift Xcode 8.2 中以编程方式将导航 Controller 嵌入到选项卡栏 Controller 中?

ios - 为什么我的 TableView 只显示每个单元格中加载的最后一张图像? ( swift )

xcode - DVTCoreSimulatorAdditionsErrorDomain Xcode 10GM

ios - Swift UICollectionView 委托(delegate)执行 segue

ios - 哪个委托(delegate)方法在单击时触发 CLLocationManager 不允许

ios - XIB 和 View Controller 之间的协议(protocol)委托(delegate)