首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用委托将多个对象传回父视图控制器?

问如何使用委托将多个对象传回父视图控制器?
EN

Stack Overflow用户
提问于 2016-11-24 13:36:28
回答 2查看 69关注 0票数 2

我使用委托方法将数据传递回父级,并使用如下语句

代码语言:javascript
复制
[self.delegate viewControllerDismissed:data1];

这个效果很好。现在我需要发送更多的数据。我能用一下

代码语言:javascript
复制
[self.delegate viewControllerDismissed:data1 with:data2];

如果是的话,协议等是什么样子的?还是我只是把所有的东西都传回数组?我找不到两个参数的例子

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-24 13:41:04

快速地使用数据、数组或字典示例的模型。

代码语言:javascript
复制
class Place: NSObject {
  var placeId: String = ""
  var primaryText: String = ""
  var secondaryText: String = ""
  var latitude: Double = 0
  var longitude: Double = 0
}

然后用创建的位置调用委托方法。

代码语言:javascript
复制
delegate?.didSelectPlace(place: placeObject)
票数 2
EN

Stack Overflow用户

发布于 2016-11-24 13:53:29

做这件事的方法不同。

Idea #1:向委托对象的类中添加一个方法,该方法可以将所有数据作为参数。

代码语言:javascript
复制
@interface MyParentViewController : NSViewController
- (void)someDataFromTheChildVC:(NSString *)data1 moreData:(NSArray *)data2;
@end

在子视图控制器中,请确保将degelate强制转换为MyParentViewController,这样就可以访问新方法:

代码语言:javascript
复制
MyParentViewController *parent = (MyParentViewController *)self.delegate;
[parent someDataFromTheChildVC:@"blah" moreData:someArray];

Idea #2:将您想要传递的所有数据放入字典,然后调用您通常的viewControllerDismissed

代码语言:javascript
复制
NSDictionary *data = @{
    @"data1": @"blah",
    @"data2": someArray
};
[self.delegate viewControllerDismissed:data];

你不需要一个协议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40787842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档