【问题标题】:Pass multiple variables through segue in Swift在 Swift 中通过 segue 传递多个变量
【发布时间】:2017-12-01 02:16:06
【问题描述】:

我看过很多教程,其中人们通过 segue 将单个变量传递给单独的视图控制器。但是我如何将整个结构或信息类发送到单独的segue?并在另一边打开它?示例:在表格视图中,我单击玩家的姓名,它将继续在另一个视图控制器中显示详细信息?

例如:棒球名册...

class Player {
    var playerName: String = ""
    var playerPosition: String = ""
    var playerImage: UIImage = ""
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let selectedPlayer = player[indexPath.row].playerName

    performSegue(withIdentifier: "player", sender: selectedPlayer)
}

【问题讨论】:

    标签: ios swift segue viewcontroller


    【解决方案1】:

    你需要使用prepare函数:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "player" {
            if let player = sender as? Player {
                let secondViewController = segue.destination as! SecondViewController
                secondViewController.player = player
            }
        }
    }
    

    当您调用performSegue 时将调用此函数。在您的 secondViewController 中声明一个播放器变量,您只需在您的 prepare 函数中传递该变量。

    在您的didSelectRowAt 更改:

    let selectedPlayer = player[indexPath.row].playerName
    

    收件人:

    let selectedPlayer = player[indexPath.row]
    

    因此,您传递整个 Player 对象,而不仅仅是 playerName

    【讨论】:

    • 在问题中发布的didSelectRowAt 方法中包含所需的更改可能会有所帮助。
    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2018-09-27
    • 2018-09-03
    相关资源
    最近更新 更多