How to pass data to a child view controller from a previous segue?

前端 未结 1 1018
再見小時候
再見小時候 2021-01-16 14:06

I need to pass data from a View Controller to a child of a parent view controller.

prepareSegue isnt passing the data over.

i need

相关标签:
1条回答
  • 2021-01-16 14:24

    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)

    0 讨论(0)
提交回复
热议问题