12

Estoy usando esta función para alternar entre las vistas en Xcode 4.3.Pasando variables entre los controladores de vista

[self performSegueWithIdentifier:@"NextView" sender:self]; 

Me gustaría pasar algunos parámetros entre las páginas. ¿Cómo puedo hacer eso?

+0

hizo u intentado usar regulador de la navegación en su lugar. es realmente simple pasar los valores – WaaleedKhan

+0

no, no probé el controlador de navegación. Uso el botón regular y segue en el guión gráfico. – bla0009

Respuesta

40

Después performSegueWithIdentifier:sender: su punto de vista controladora llamará

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

asumir su nuevo controlador de vista tiene algunos propiedades para establecer:

if ([[segue identifier] isEqualToString:@"NextView"]) { 
    MyViewController *myVC = [segue destinationViewController]; 
    myVC.propertyToSet = // set your properties here 
} 
+0

, configuré la propiedad como dijiste y cómo puedo leer el valor de esa propiedad. Y también, ¿qué pasa si necesito pasar múltiples variables a la siguiente vista? – bla0009

+0

Para múltiples variables, use propiedades múltiples y para leer de una propiedad use ... = self.property (en su controlador de vista donde definió esa propiedad) – Pfitz

+0

Entiendo eso, pero no estoy seguro de cómo obtener esos datos en el " Siguiente vista ". – bla0009

5

Esta pregunta tiene una explicación muy agradable y correcto de los datos que pasan entre los controladores de vista:

Passing Data between View Controllers

+1

sí, está bien explicado en esa página, pero están usando pushViewController para ver el cambio, pero me gustaría usar performSegueWithIdentifier. – bla0009

3

Aquí está la respuesta de Pfitz, pero me hizo un poco más fácil de entender para la gente que son nuevos en Objective-C utilizando un ejemplo:

  1. En el archivo destinationViewController.h añadir valor de la propiedad para la variable de 'recibir' el valor de su archivo fuente Controller.m

    @property (nonatomic) int billIdReceivingVote; 
    
  2. Importe su destinationViewController.h a su archivo sourceViewController.m:

    // VOLViewController.m 
    #import "VOLVoteViewController.h 
    
  3. Añadir prepareForSegue método para su archivo sourceViewController.m y pasan las variables

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
        VOLVoteViewController *myDestinationViewController = [segue destinationViewController]; 
    
        // myDestinationViewController.variable = sourceViewController variabe 
        myDestinationViewController.billIdReceivingVote = [self.idOfBillSelected intValue]; 
    } 
    
Cuestiones relacionadas