【发布时间】:2015-07-14 06:50:32
【问题描述】:
我有三个视图控制器。我们称它们为 BaseVC、firstVC 和 secondVC。 FirstVC 由 BaseVC 模态呈现。 SecondVC 由 firstVC 推送。每个 firstVC 和 secondVC 上都有一个按钮。通过单击它们,我想关闭当前的 VC 并让 BaseVC 做一些事情。所以我创建了一个协议,让 BaseVC 服从它,并将 BaseVC 设置为 firstVC 的委托。当我从 firstVC 设置 secondVC 的委托时,断点显示它成功。但是,当我从 secondVC 调用委托时,它显示 _delegate 为 nil。
是因为delegate 始终是weak 属性吗?那么如何在 View Controller 之间传递委托,或者有没有其他方法可以解决这个问题?
【问题讨论】:
-
"当我从 firstVC 设置 secondVC 的委托时..." 你能发布代码吗?
-
Delegate 在不创建循环引用方面很弱。 BaseVC 位于 secondVC 和 thirdVC 之下,具有比这些推送 VC 更长的保证生命周期。
-
就在
prepareforSegue方法中,我设置了((secondVC *)destinationViewController).delegate = self.delegate@ZeMoon -
@LancelotdelaMare 因为当 secondVC 运行时,BaseVC 作为委托仍然可用。那么为什么我在 secondVC 的断点中看到 secondVC 的 delegate 是 nil,而在 firstVC 的断点中却看到它不是 nil~
-
很高兴回答这个问题。请在此处或 GitHub 上发布示例代码以供审核。
标签: ios objective-c uiviewcontroller delegates