2012-01-02 10 views
16

Tengo dos controladores en el guión gráfico, integrados en un NavigationController, y hay un cambio para cambiar entre estos.Pasa los datos al controlador anterior

Pasar datos del primer controlador al segundo es bastante sencillo al implementar prepareForSegue, y configurar las propiedades del segundo controlador usando segue.destinationViewController.

Debería devolver los datos desde el segundo controlador al anterior también. Busqué en Google, pero no encontré ningún código simple pero funcional para demostrarlo.

¿Serías tan amable dame una muestra simple sobre la mejor manera de hacerlo?

¡Gracias de antemano!

Respuesta

24

En su segunda clase de controlador de vista crea un protocolo y delega. El primer controlador de vista se configurará como el delegado en prepareForSegue e implementará los métodos de protocolo. El segundo controlador de vista llamará a los métodos para pasar datos al primer controlador de vista. Aquí hay un código de uno de mis proyectos como ejemplo.

@protocol TableSelectorDelegate <NSObject> 

@optional 
- (void)didMakeSelection:(id)selectionString forType:(NSString *)dataTitle; 
- (void)didAddNewValue:(NSString *)newValue forType:(NSString *)dataTitle; 

@end 

@interface TableSelectorViewController : UITableViewController 

@property (nonatomic, weak) id<TableSelectorDelegate> delegate; 

@end 
+0

Para iOS6, hay segue segue – huggie

2

La forma "recomendada" de hacerlo es utilizando un delegado. Haga que el primer controlador de vista se configure como el delegado del nuevo controlador de vista durante la llamada -prepareForSegue:, luego, cuando termine, llame a los métodos delegados que haya definido.

Esto es un poco más trabajo que el acoplamiento apretado de los dos controladores, pero en realidad ahorra tiempo si alguna vez encuentra que necesita usar el controlador de una manera ligeramente diferente. Si miran el video de la WWDC'11 sobre el uso de IB y Storyboards, en realidad siguen este patrón en profundidad e incluyen ejemplos de código y demostraciones, por lo que recomiendo echarle un vistazo.

3

cuando establece los datos que está pasando al segundo controlador también puede establecer un puntero al anterior.

0

He estado estudiando todas las variantes a esta pregunta de cómo pasar datos de un controlador de vista a otro y he llegado a ver que la segunda aplicación iOS Tutorial de Apple no sólo tiene el código, pero una explicación preciosa de todo lo involucrado

+0

¿Dónde lo encuentro? – Jeroen

+0

https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011318 –

+0

También debe leer sobre los delegados, como se describe en la respuesta aceptada. –

Cuestiones relacionadas