¿Pasar un diccionario entre dos controladores de vista?
Frecuentes
Visto 5,022 veces
0
Tengo una aplicación en la que tengo una llamada de servicio web que devuelve datos como un diccionario. Quiero acceder a este diccionario en otro controlador de vista para cargar los valores en una tabla.
¿Alguien puede demostrar cómo pasar este diccionario de respuestas de un controlador de vista a otro?
2 Respuestas
3
Podrías definir un NSDictionary
propiedad en tu AnotherViewController
y configurarlo desde el controlador anterior. Voy a dar un breve ejemplo a continuación.
//.h
@interface AnotherViewController {
NSDictionary *data;
}
@property(nonatomic,retain) NSDictionary *data;
@end
//.m
@implementation AnotherViewController
@synthesize data;
Ahora desde el controlador actual, después de inicializar AnotherViewController
configuras el diccionario antes de presentarlo.
AnotherViewController *controller = [[AnotherViewController alloc] init];
controller.data = myCurrentDictionary;
Actualmente AnotherViewController
tiene un data
propiedad con el valor del controlador anterior.
Espero que esto ayude.
Respondido el 12 de junio de 12 a las 07:06
1
Supongo que se llama al servicio web porque sucedió algo (se hizo clic en el botón, viewDidLoad
/viewDidAppear
). Si este es el caso, pasando una referencia del UIViewController
a la clase de servicio web es una opción válida perfecta. Tenga en cuenta que para esta relación debe crear un protocolo, por lo que en su clase de servicio web tiene algo como esto:
id<ViewControllerResponseProtocol> referenceToViewController;
Este planteamiento de « ViewControllerResponseProtocol
definiría un método como este:
-(void)responseFromWebservice:(NSDictionary*)myDictionary;
Entonces, cuando la clase de servicio web ha creado el NSDictionary
puede el método anterior desde el referenceToViewController
:
[referenceToViewController responseFromWebservice:myDictionary];
Si no existe ningún tipo de relación entre ambos, se utiliza could NSNotificationCenter
para ello.
PS: La solución de skram es perfectamente válida si ya tienes la NSDictionary
desde el servicio web en la inicial UIViewController
y ahora quieres pasarlo a un nuevo UIViewController
. Aunque no creo que eso sea lo que quieres.
Respondido el 12 de junio de 12 a las 08:06
como dice el OP, a él le gustaría "..access
el diccionario en otro controlador de vista". Lo que significa que ya lo tiene. No creas que se pidió un voto negativo para eso :) - scram
Tiene donde? Si lo tiene en el UIViewController
que inició la acción, debería acepta tu respuesta. - rui peres
another view controller
significa que ya está en a
controlador de vista y quiere los datos en another one
- scram
Bueno, no te preocupes, estoy seguro de que tu respuesta será aceptada. También está asumiendo que el nuevo controlador de vista no existe (lo está creando). - rui peres
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c ios cocoa-touch or haz tu propia pregunta.
Usar funciones o NSUserDefaults o tomar el diccionario asignado y sintetizado en appdelegate, etc. Dhaval Panchal
puede intentar usar protocolos para acceder a datos de otros controladores de vista. - Leena