unwind performsegue perform for swift button segue programmatically-created

performsegue - unwind segue programmatically swift 4



Segue y Button programáticamente rápidos (2)

Estoy usando iCarousel y tengo que crear mi propio botón. Quiero pasar datos desde el botón hecho mediante programación a otra vista, pero no tengo un identificador de segue porque creé el botón mediante programación. No sé si es posible crear el identificador del segue programáticamente.

button.addTarget(self, action: #selector(buttonAction3), for: .touchUpInside) button.setTitle("/(titulos[index])", for: .normal) tempView.addSubview(button) let myImage = UIImage(named: "modo4.png") as UIImage? button.setImage(myImage, for: .normal) let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "modo") as! Modo1ViewController self.present(viewController, animated: false, completion: nil) if segue.identifier == "" { if let destination = segue.destination as? Modo1ViewController { destination.nomb = nombres } }


en su caso, si usa self.present y desea enviar datos entre vistas. Prueba esto:

let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "modo") as! Modo1ViewController viewController.nomb = nombres self.present(viewController, animated: false, completion: nil)

No sé cómo configurar el identificador de segue, pero creo que el código anterior puede ayudar

Si desea hacer un trabajo más fácil, puede crear segue en IB (Interface Builder) y configurar su identificador, luego usar

performSegue:withIdentifier:sender


Crear seuge

asignar identificador

y tu objetivo de botón

func buttonAction3() { self.performSegue(withIdentifier: "segueToNext", sender: self) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "segueToNext" { if let destination = segue.destination as? Modo1ViewController { destination.nomb = nombres // you can pass value to destination view controller } } }