如何通过segue发送多个变量

时间:2018-04-29 01:13:50

标签: ios swift segue

如何在Swift中通过segue发送多个变量? QBBust被发送得很好并在视图控制器上打印,但QBName由于某种原因不会被发送。谁能发现原因?

        if let send = sender as? Double{
            destination.QBBust = send
        }
        if let sent = sender as? String{
            destination.QBName = sent
        }
    }
}

private var _QBName:String!
var QBName: String{
    get{
        return _QBName
    } set {
        _QBName = newValue
    }
}

private var _QBBust:Double!
var QBBust: Double {
    get {
        return _QBBust
    } set{
        _QBBust = newValue
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    let bust = String(Int(_QBBust))
    QBBustLabel.text = "\(bust)%"

    QBNameLabel.text = _QBName
}

下一部分是触发segue的按钮功能

performSegue(withIdentifier: "QBResultVC", sender: QBBust)

performSegue(withIdentifier: "QBResultVC", sender: QBName)

2 个答案:

答案 0 :(得分:2)

正如在Tiago的回答中,您可以创建一个具有QBName和QBBust属性的新结构或类。此外,您还可以在Swift中使用元组。

这是一个例子:

目标ViewController中的

声明var QBInfo:(name: String, bust: Double)?

和触发segue的按钮功能

let QBInfo = (name: QBName, bust: QBBust)
performSegue(withIdentifier: "QBResultVC", sender: QBBust) 

然后在prepareForSegue:sender:方法

destination.QBInfo = QBInfo

答案 1 :(得分:0)

这个问题是重复的,但您可以创建一个Struct或新类,并将数据存储到属性中并在segue中发送'transport'对象。

有关详细信息,请查看此回答:

Swift sending Multiple Objects to View Controller