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

Hola, estoy utilizado por primera vez los storyboards,

Estoy intentando asignar un valor a una variable de otra clase, tal y como lo hacia con addsubview.

Clase A .m

ClaseB *claseb = [ClaseB alloc];

claseb.id = @"1";

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

y cuando llega a la ClaseB

Ejecuta viewDidload, dentro de este metodo tengo:

[super viewDidLoad];

[self leerDatosWebService];

cuando va a leerDatosWebService, intento recoger el valor de id (Que asigne) y este siempre tiene NULL.

Es una variable de tipo nsstring (retain, nonatomic).

Hay que hacerlo distinto al utilizar, [self performSegueWithIdentifier: @"Entrar" sender: self];?

Si utilizo addSubview por que se ejecuta 2 veces viewDidLoad?

Gracias.

preguntado 02 Abr '12, 12:50

jlillop's gravatar image

jlillop
168406682

cerró 25 Abr '12, 10:41

La pregunta ha sido cerrado por el siguiente motivo "La pregunta esta respondida, con respuesta aceptada." por La pregunta ha sido cerrado por la siguiente razón "La pregunta esta respondida, con respuesta aceptada." by jlillop 25 Abr '12, 10:41


Buenos días,

Por lo que he entendido de tu pregunta quieres pasar de un ViewController A a un ViewController B y antes cambiar una o varias propiedades..

Para cambiar una propiedad del ViewController B desde el ViewController A deberás utilizar el metodo:

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

Debes comprobar que el segue es el que tu quieres con:

if ([[segue identifier] isEqualToString:@"identifier"]){ }

Y una vez comprobado:

[[segue destinationViewController] setYourObject:object];

tantas veces como propiedades necesites cambiar.

Espero haberte sido de ayuda.

enlace permanente

respondido 02 Abr '12, 13:03

ahrgomez's gravatar image

ahrgomez
96115

Hola, no se como interpretar (usar) esta linea que me comentas.

[[segue destinationViewController] setYourObject:object];

la forma en la que continuo el segue me funciona, pero el problema es que no se actualiza el valor de la variable de la clase b que asigno dede la clase a

Gracias

(02 Abr '12, 14:08) jlillop

Te pongo un ejemplo de lo que yo hago con el identificador "transicion", y mi variable en el ViewController B de tipo NSString llamada Nombre:

Dentro del ViewController A:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ if([segue.identifier isEqualsToString:@"transicion"]){ [[segue destinationViewController] setNombre:@"Nuevo valor en B"];
} }

Nombre debe ser una property en B y debe estar correctamente puesta en synthesize.

Coméntame si tienes alguna duda más.

(02 Abr '12, 15:29) ahrgomez

Me salta este problema:

-[UINavigationController leerDatosWebService:]: unrecognized selector sent to instance 0x6835fc0 ...

lo que hago es:

[[segue destinationViewController] leerDatosWebService:idusuario];

idusuario es NsString

el metodo en B es asi:

-(void) leerDatosWebService:(NSString *)idUsuario{}

No funciona porque en el storyboard va a un navigation controller ke este está hecho relationship con la viewcontroller a la que voy...

Como seria la union?

(02 Abr '12, 17:55) jlillop

Te has asegurado que el identificador de la segue es el correcto como te he dicho? y otra cosa tienes importado el .h del ViewController B en el A?

(02 Abr '12, 18:32) ahrgomez

Si lo tengo importado y el identidicador es el correcto.

El problema es que mi storyboard va desde el viewcontrollerA, esta unido a un navigation controller (por push) y este esta con relactionship con el viewcontrollerB, lo que creo que pasa es que intenta ejecutar el metodo que le escribo y como no va a viewcontrollerB sino al navigationController primero pues no lo coje.

He cambiado la relacion para que vaya al B directamente y va perfecto, pero pierdo el navigation controller de esa viewcontroller de esa manera...

(02 Abr '12, 18:35) jlillop
1

Claro, el tema está en que el destinationViewController es el NavigationController, prueba lo siguiente:

UINavigationController navi = [segue destinationViewController]; ViewController2 v2 = [navi.viewControllers objectAtIndex:0]; [v2 leerDatosWebService:idusuario];

(02 Abr '12, 19:36) ahrgomez

Muchisimas gracias, Ahora si que funciona, lo unico que tengo un waring en:

[v2 leerDatosWebService:idusuario];

Dice que uiviewcontroller quizás no responda al metodo leerDatosWebService..., limpio y compilo pero no se quita...

Mil Gracias

(03 Abr '12, 01:27) jlillop
mostrando 5 de 7 mostrar todos

Sobre esta pregunta

Etiquetas de la pregunta:

×47
×8
×5
×2

Pregunta realizada el: 02 Abr '12, 12:50

Pregunta visitada: 980 veces

Última modificación: 25 Abr '12, 10:41

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