without pass data ios view parameters storyboard segue

ios - pass - swift add segue storyboard



Realice Segue programáticamente y pase parámetros a la vista de destino (5)

Swift 4:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "ExampleSegueIdentifier" { if let destinationVC = segue.destination as? ExampleSegueVC { destinationVC.exampleString = "Example" } } }

Swift 3:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "ExampleSegueIdentifier" { if let destinationVC = segue.destinationViewController as? ExampleSegueVC { destinationVC.exampleString = "Example" } } }

en mi aplicación, tengo un botón que realiza un segue programáticamente:

- (void)myButtonMethod { //execute segue programmatically [self performSegueWithIdentifier: @"MySegue" sender: self]; }

Me gustaría saber si hay una forma de referenciar la vista de destino y pasarle algunos parámetros.

Sé que en el método prepareForSegue , puedo referirme a él con: myDestinationViewController *vc = [segue destinationViewController]; , pero no sé cómo ejecutar esto segmen programáticamente.

¿Tienes alguna idea?

Gracias, yassa

ACTUALIZAR:

Lo siento por esta pregunta! Simplemente descubrí que, incluso si el segue se invoca mediante programación, el método prepareForSegue se llama de todos modos, por lo que es posible pasar los parámetros de la misma manera habitual.


En caso de que use una nueva versión rápida.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "ChannelMoreSegue" { } }


Entiendo el problema de realizar el segue en un lugar y mantener el estado para enviar parámetros en preparación para el cambio.

Descubrí una forma de hacer esto. He agregado una propiedad llamada userInfoDict a ViewControllers usando una categoría. y también he anulado la ejecución de segue con el identificador, de tal manera que si el remitente es uno mismo (significa el controlador mismo). Pasará este userInfoDict al siguiente ViewController.

Aquí, en lugar de pasar todo el UserInfoDict, también puede pasar los parámetros específicos, como remitente y anular en consecuencia.

1 cosa que debes tener en cuenta no te olvides de llamar al método súper en tu método de Realización.


La respuesta es simplemente que no importa cómo se desencadena la transición.

El prepareForSegue:sender: se llama en cualquier caso y aquí es donde pasa los parámetros.


Pregunta anterior, pero aquí está el código sobre cómo hacer lo que está preguntando. En este caso, paso los datos de una celda seleccionada en una vista de tabla a otro controlador de vista.

en el archivo .h de la vista trget:

@property(weak, nonatomic) NSObject* dataModel;

en el archivo .m:

@synthesize dataModel;

dataModel puede ser string , int o similar, en este caso es un modelo que contiene muchos elementos

- (void)someMethod { [self performSegueWithIdentifier:@"loginMainSegue" sender:self]; }

O...

- (void)someMethod { UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeController"]; [self.navigationController pushViewController: myController animated:YES]; } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"storyDetailsSegway"]) { UITableViewCell *cell = (UITableViewCell *) sender; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; NSDictionary *storiesDict =[topStories objectAtIndex:[indexPath row]]; StoryModel *storyModel = [[StoryModel alloc] init]; storyModel = storiesDict; StoryDetails *controller = (StoryDetails *)segue.destinationViewController; controller.dataModel= storyModel; } }