|
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. |
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:
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. 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
|