以编程方式 Segue 和 Button swift

Segue and Button programmatically swift

我正在使用 iCarousel,我必须创建自己的按钮。我想将数据从以编程方式创建的按钮传递到另一个视图,但我没有 segue 标识符,因为我以编程方式创建了按钮。我不知道是否可以通过编程方式创建 segue 的标识符。

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
        }

    }

创建 seuge

分配标识符

和您的按钮目标

 @IBAction func button_clicked(_ sender: UIButton) {
        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

            // destination.nomb = arrayNombers[(sender as! UIButton).tag] // Using button Tag
        }
    }
 }

在你的情况下,如果你使用 self.present 并且你想在视图之间发送数据。试试这个:

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

我不知道如何设置 segue 的标识符,但我认为上面的代码可以提供帮助

如果你想做更简单的工作,你可以在 IB (Interface Builder) 中创建 segue 并设置它的标识符,然后使用

performSegue:withIdentifier:sender