AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

Hola, en mi app necesito a veces pasar datos de una vista a otra para luego después mostrar esta vista. Actualmente hago:

LaVistaVC *lavista = [[LaVistaVC alloc] initWithNib...
Lavista.cocheString = self.marcasString;
Selr.navigationcontroller push...
[lavista release];

Pero a veces no me da el valor a cocgesString. En mi .m tengo importada LaVistaVC.h. Un saludo.

preguntado 06 Mar '11, 08:49

Izqui's gravatar image

Izqui
345202831


También puedes crear un inicializador en tu vista que acepte los parametros

- (id)initWithNibName:(NSString*)nibName bundle:(NSBundle*)nibBundle withCocheString:(NSString*)coche{
       self = [super initWithNibName:nibName bundle:nibBundle];
       if (self == nil){
          return nil;
       }
       cocheString = coche;
       return self
}

De este modo puedes inicializar tu vista con tus datos

enlace permanente

respondido 06 Mar '11, 12:52

hector%20spc's gravatar image

hector spc
1264510

Muchas gracias... esto era!!!

(07 Mar '11, 08:38) Izqui

De todas formas tal y como comenta emenegro, mira bien que el accesor a tu propiedad está en retain y no en assign. La forma que mencionas en tu pregunta es también correcta pero es posible que lo tengas en assign apuntando al puntero en vez de retenerlo y por tanto cuando la vista va a usar dicho puntero la variable se ha perdido y por lo tanto te da nil. En cambio si hace un retain da lo mismo si el controller ha hecho un release de la variable ya que la vista mantiene la variable viva ya que ha hecho retain (y por lo tanto debería de hacer un release en el dealloc).

Pasar las variables en el inicializador o asignarlas después mediante setters es una cuestión de estilo realmente. Personalmente yo prefiero que vayan en el inicializador si la clase, en este caso la vista, es ínutil sin dichas variables, es decir necesita de dichas variables para tener sentido, ya que no existen valores por defecto.

(08 Mar '11, 18:48) hector spc

Buenas Izqui,

Intenta inicializar siempre la propiedad cocheString en el viewDidLoad de LaVistaVC. Creo que alguna vez me ha pasado que no se asignaba por que la propiedad de la siguiente vista apuntaba a nil (0x0).

Ya nos contarás... :)

enlace permanente

respondido 06 Mar '11, 11:58

juanmac's gravatar image

juanmac ♦
3.0k334181

A lo dicho por los compañeros, si dices que a veces no te da valor eso puede ser que el accessor que usas para pasar la propiedad a LaVista es un assign y debería ser un copy o un retain (si es una cadena siempre usa copy).

enlace permanente

respondido 06 Mar '11, 16:03

emenegro's gravatar image

emenegro
3.7k163264

Tu respuesta:
Activar/desactivar vista previa

Sobre esta pregunta

Etiquetas de la pregunta:

×4
×2

Pregunta realizada el: 06 Mar '11, 08:49

Pregunta visitada: 726 veces

Última modificación: 08 Mar '11, 18:48

Seguir esta pregunta

Por Email:

Una vez que entres podrás suscribirte desde aquí para recibir actualizaciones

Por RSS:

Respuestas

Respuestas y Comentarios

Realizar Donación