objective c - español - Pasa los datos de vuelta al controlador anterior
delegate swift español (4)
En tu segunda clase de controlador de vista, creas un protocolo y delegado. El primer controlador de vista se establecerá como delegado en prepareForSegue e implementará los métodos de protocolo. El segundo controlador de vista llamará a los métodos para pasar los 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
Tengo dos controladores en el guión gráfico, incrustados en un NavigationController, y hay un segmento para cambiar entre estos.
Pasar los datos del primer controlador al segundo es bastante sencillo al implementar prepareForSegue y establecer las propiedades del segundo controlador utilizando segue.destinationViewController.
También debo devolver los datos del segundo controlador al anterior. Busqué en Google, pero no he encontrado ningún código simple, pero de trabajo para demostrarlo.
¿Sería tan amable de darme una muestra simple sobre la mejor manera de hacerlo?
¡Gracias por adelantado!
He estado estudiando todas las variantes de esta pregunta de cómo pasar los datos de un controlador de vista a otro y he llegado a ver que el Segundo Tutorial de la Aplicación de iOS de Apple no solo tiene el código, sino también una hermosa explicación de todo lo relacionado.
La forma "recomendada" de hacer esto es usar un delegado. Haga que el primer controlador de vista se establezca como el delegado del nuevo controlador de vista durante la llamada -prepareForSegue:
luego, cuando haya terminado, llamará a los métodos de delegado que haya definido.
Esto es un poco más de trabajo que unir los dos controladores, pero en realidad ahorra tiempo si alguna vez necesita usar el controlador de una manera ligeramente diferente. Si ves el video de WWDC''11 sobre el uso de IB y Storyboards, en realidad analizan este patrón en profundidad e incluyen ejemplos de código y demostraciones, así que recomiendo echarle un vistazo.
cuando configura los datos que está pasando al segundo controlador, también puede establecer un puntero al anterior.