How can I passing data from parent view controller

2019-02-25 15:06发布

How can I passing data from parent view controller to child view controller?

I tried doing this with delegates. but I don't think it's an option?

标签: ios delegates
2条回答
一纸荒年 Trace。
2楼-- · 2019-02-25 15:42

You can access your child view controllers by:

NSArray *children = self.childViewControllers;
查看更多
来,给爷笑一个
3楼-- · 2019-02-25 15:49

Option 1

If you're passing from a parent to a child view controller, then just set the property of your childViewController from the parent.

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

Option 2

Or, you can set up a delegate

Step 1: set up protocol above interface in ChildViewController.h file

@protocol ChildViewControllerDelegate

- (NSDictionary *) giveMeData;

@end

@interface  .....

Step 2: create delegate property in ChildViewController.h interface

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

Step 3: declare delegate protocol in ParentViewController.h

@interface ParentViewController : UIViewController <ChildViewControllerDelegate>

Step 4: in ParentViewController.m add this method:

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

Step 5: before launching childViewController declare delegate property.

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

Step 6: in child view controller whenever you want data add this

NSMutableDictionary * dataFromParent = [self.delegate giveMeData];

The parentVC will run 'giveMeData' and return a NSMutableDictionary (adjust for whatever data you want)

查看更多
登录 后发表回答