使用 Delegates 通过多个 viewController 传回数据

Posted

技术标签:

【中文标题】使用 Delegates 通过多个 viewController 传回数据【英文标题】:passing data back with multiple viewControllers using Delegates 【发布时间】:2013-01-22 22:10:39 【问题描述】:

我已经成功地学习了如何使用委托。迄今为止,我已经学习了如何使用 storyBoards 通过 prepareForSegue 方法将数据传递给 secondViewController,然后使用 Delegates 将来自 secondViewController 的数据返回给第一个 ViewController。

问题是当我创建一个 thirdViewController 时,如下所示: 视图控制器>>第二视图控制器>>第三视图控制器。 (委托协议在thirdViewController中设置)

我的委托可以很好地将数据从 thirdViewController 传递到 secondViewController。问题是从 secondViewController 传递回 viewController 时

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

SecondViewController *page2 = [[SecondViewController alloc]init];
[[segue identifier] isEqual:@"page2"];
page2 = [segue destinationViewController];
page2.delegate = self; // this is the problem ??

我得到的错误如下:找不到属性“委托”。 代表不能在多个视图(链中)中工作的问题是这样的吗??

【问题讨论】:

【参考方案1】:

几个提示:

    SecondViewController *page2 = [[Page2 alloc]init];SecondViewControllerPage2是什么关系?

    确保您在 SecondViewController 中定义了 delegate

    确保您在#import "SecondViewController.h" 中加入viewController.m

【讨论】:

@anO 感谢您的提示,是的,我更改了提示 1 上的错误。不过,没有运气。我又重新编写了代码——这次没有错误,但我又遇到了同样的问题——还有其他想法吗?? @anO 我现在发现你不能链接委托消息。所以我试图做的事情是不可能的。我所说的“同样的问题”是指不能将委托消息从thirdController 传递到secondViewController 和viewController。我知道我可以用 NSNotification 做到这一点,但我试图用 Delegates 做到这一点。 我不明白为什么你不能。只需在 vc1 的-delegateMethodOfVC2 实现中调用[delegate delegateMethodOfVC1],其中delegate = vc

以上是关于使用 Delegates 通过多个 viewController 传回数据的主要内容,如果未能解决你的问题,请参考以下文章

koa2--delegates模块源码解读

ios委托(Delegates)示例

Delegate是啥,举例说明!

C#委托使用详解(Delegates)

C#委托使用详解(Delegates)

C#C#委托使用详解(Delegates)