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)