¿Cómo puedo pasar parameters adicionales a un segue personalizado?

He estado jugando con segues personalizados en iOS y estoy tratando de usarlos tanto como sea posible para permitir que el flujo de trabajo completo de la aplicación se visualice en mi storyboard. Cuando creo, digo un popover segue, sabe de la vista que activa el segue (debe ser para posicionar el popover), pero cuando creo un segue personalizado, no puedo encontrar una manera de hacer lo mismo. ¿Hay alguna manera de acceder a la vista que inició la segue en una segue personalizada? Además, ¿hay alguna manera de pasar parameters personalizados a una segue de Interface Builder, de la misma forma que puedes pasar arguments de time de ejecución a un controller de vista?

Puede acceder a la Vista que ha desencadenado una segue personalizada implementando el método:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

… en su controller de vista.

En ese método, el valor del remitente será la vista que activó el segue, si lo vincula utilizando Interface Builder. Al implementar este método, se recomienda consultar qué segue se ha activado de la siguiente manera:

 if ([[segue identifier] isEqualToString:@"segueid"]) 

… donde "segueid" sería el identificador que le dio a su segue en Interface Builder.

Acerca de su segunda pregunta, no sé cómo especificar parameters para un segue en Interface Builder, pero puede usar el mismo método "prepareForSegue" para pasarlos desde su View Controller en Runtime.

Imagine que su segue personalizada tiene una propiedad llamada animationStyle

Si realiza el método, puede tener lo siguiente:

 - (void)perform { switch (self.animationStyle) { case 0: // TODO Perform animation type 0 case 1: // TODO Perform animation type 1 } } 

Luego, supongamos que tiene un par de controlleres de vista en los que desea usar esa segue personalizada. En el primero puedes implementar el método performSegue como:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"yourCustomSegueID"]) { ((YourCustomSegueClass *)segue).animationStyle = 0; } } 

Mientras que en el segundo controller de vista puede implementarlo como:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"yourCustomSegueID"]) { ((YourCustomSegueClass *)segue).animationStyle = 1; } } 

… Con tanta eficacia, está reutilizando la misma class de segue personalizada para get diferentes efectos. Todavía es cierto que IB no le permitirá configurar la segue directamente, pero no hay forma de hacerlo en lo que yo sé.