【问题标题】:Skip a viewcontroller with delegates跳过带有委托的视图控制器
【发布时间】:2013-03-25 10:20:00
【问题描述】:
我转了好几天。
我有 3 个 ViewController 的层次结构。
从 VC1 开始,从那里你可以加载 VC2。在 VC2 中可以加载 VC3。
我的导航工作正常 VC1->VC2->VC3 和向后一样。
VC3 允许用户返回到 VC1。
我想知道是否可以告诉 VC3 VC1 现在是它的委托。
它可以在 VC2 中正常工作,但我想在 VC1 中使用 VC3 中保存的数据。
【问题讨论】:
标签:
iphone
ios
objective-c
delegates
viewcontroller
【解决方案1】:
创建一个委托以将值从一个类传递给另一个类。
然后在 VC1 和 VC2 中设置委托,其中 VC1 从 VC2 接收,VC2 从 VC3 接收
然后从 VC3 调用委托并将值传递给 VC2。在 VC2 中,被调用的方法实现其委托到 VC1 的调用,值在 vc1 中
VC3-->del-->VC2-->del->VC1
【解决方案2】:
如果 VC1 是 VC2 的委托,你可以将 VC2 的委托属性分配给 VC3 的委托属性
在 VC3 被推入导航堆栈之前的 VC2 @实现中:
vc3Instance.delegate = self.delegate
【解决方案3】:
我建议例如在每个视图控制器中添加一个名为“master”的弱属性,并使其指向呈现它的视图控制器。完成此操作后,您可以通过以下方式从 VC3 访问 VC1(及其所有数据):
VC1ViewController *vc1 = self.master.master;