我怎样才能将数据从父视图控制器传递给子视图控制器?

我怎样才能将数据从父视图控制器传递给子视图控制器?

我试图与代表这样做。 但我不认为这是一个选项?

选项1

如果您从父项传递给子视图控制器,则只需从父项设置您的childViewController的属性。

customChildViewController.someRandomProperty = @"some random value"; [self presentViewController:customChildViewController animated:YES completion:nil]; 

选项2

或者,您可以设置一个委托

第一步:在ChildViewController.h文件的接口上面设置协议

 @protocol ChildViewControllerDelegate - (NSDictionary *) giveMeData; @end @interface ..... 

第2步:在ChildViewController.h接口中创build委托属性

 @property (strong, nonatomic) id<ChildViewControllerDelegate>delegate 

第3步:在ParentViewController.h中声明委托协议

 @interface ParentViewController : UIViewController <ChildViewControllerDelegate> 

第4步:在ParentViewController.m中添加这个方法:

 - (NSDictionary *) giveMeData { NSMutableDictionary * dataToReturn = [[NSMutableDictionary alloc]init]; dataToReturn[@"some"] = @"random"; dataToReturn[@"data"] = @"here"; return dataToReturn; } 

第5步:在启动childViewController之前声明委托属性。

 childViewController.delegate = self; [self presentViewController:childViewController animated:YES completion:nil]; 

第6步:在子视图控制器中,只要你想要数据添加这个

 NSMutableDictionary * dataFromParent = [self.delegate giveMeData]; 

父VC会运行'giveMeData'并返回一个NSMutableDictionary(调整你想要的任何数据)

你可以通过以下方式访问你的子视图控

 NSArray *children = self.childViewControllers;