使用 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];
SecondViewController
和Page2
是什么关系?
确保您在 SecondViewController
中定义了 delegate
。
确保您在#import "SecondViewController.h"
中加入viewController.m
。
【讨论】:
@anO 感谢您的提示,是的,我更改了提示 1 上的错误。不过,没有运气。我又重新编写了代码——这次没有错误,但我又遇到了同样的问题——还有其他想法吗?? @anO 我现在发现你不能链接委托消息。所以我试图做的事情是不可能的。我所说的“同样的问题”是指不能将委托消息从thirdController 传递到secondViewController 和viewController。我知道我可以用 NSNotification 做到这一点,但我试图用 Delegates 做到这一点。 我不明白为什么你不能。只需在 vc1 的-delegateMethodOfVC2
实现中调用[delegate delegateMethodOfVC1]
,其中delegate = vc
。以上是关于使用 Delegates 通过多个 viewController 传回数据的主要内容,如果未能解决你的问题,请参考以下文章