que containerview container ios objective-c view uiviewcontroller

containerview - view lifecycle ios



¿Cómo pasar datos a un controlador de vista secundaria desde una transición previa? (1)

Necesito pasar datos de un View Controller to a child of a parent view controller.

prepareSegue no pasa los datos.

Necesito que se pase antes de viewdidload.

así es como estoy tratando de pasar información de un controlador de vista a un hijo de un padre.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // NSLog(@"prepareForSegue: %@",segue.identifier); ViewController2 *transfer = segue.destinationViewController; if ([segue.identifier isEqualToString:@"Test"]) { transfer.testLabel = @"Pass this data"; } }


Opción 1

Si pasa de un controlador primario a uno infantil, simplemente establezca la propiedad de su control hijoViewView del padre.

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

opcion 2

O bien, puede configurar un delegado

Paso 1 : configurar el protocolo arriba de la interfaz en el archivo ChildViewController.h

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

Paso 2 : crea una propiedad de delegado en la interfaz ChildViewController.h

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

Paso 3 : declara el protocolo delegado en ParentViewController.h

@interface ParentViewController : UIViewController <ChildViewControllerDelegate>

Paso 4 : en ParentViewController.m agregue este método:

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

Paso 5 : antes de ejecutar childViewController, declare la propiedad de delegado.

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

Paso 6 : en el controlador de vista infantil cada vez que quiera datos, agregue esto

NSMutableDictionary * dataFromParent = [self.delegate giveMeData];

El parentVC ejecutará ''giveMeData'' y devolverá un NSMutableDictionary (ajuste los datos que desee)