如何使用委托将多个对象传递回父viewcontroller?

时间:2016-11-24 13:36:28

标签: ios objective-c

我正在使用委托方法使用诸如

之类的语句将数据传回父级
[self.delegate viewControllerDismissed:data1];

这很有效。现在我需要发送更多数据。我可以使用像

这样的东西吗?
[self.delegate viewControllerDismissed:data1 with:data2];

如果是这样,协议等是什么样的?或者我只是通过和数组传递一切?我找不到任何带有两个参数的例子

2 个答案:

答案 0 :(得分:2)

使用swift我正在使用的数据模型或数组或字典示例

class Place: NSObject {
  var placeId: String = ""
  var primaryText: String = ""
  var secondaryText: String = ""
  var latitude: Double = 0
  var longitude: Double = 0
}

然后用创建的地方调用委托方法

delegate?.didSelectPlace(place: placeObject)

答案 1 :(得分:0)

执行此操作的不同方法。

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

@interface MyParentViewController : NSViewController
- (void)someDataFromTheChildVC:(NSString *)data1 moreData:(NSArray *)data2;
@end

在子视图控制器中,确保将degelate转换为MyParentViewController,以便您可以访问新方法:

MyParentViewController *parent = (MyParentViewController *)self.delegate;
[parent someDataFromTheChildVC:@"blah" moreData:someArray];

创意#2:将您要传递的所有数据放回字典中,然后拨打您的常用viewControllerDismissed

NSDictionary *data = @{
    @"data1": @"blah",
    @"data2": someArray
};
[self.delegate viewControllerDismissed:data];

你不需要这个协议。