2017-06-27 47 views
0

我見過很多教程,其中人們將單個變量通過segue傳遞給單獨的視圖控制器。但是,我怎樣才能發送一個完整的結構或一類信息到一個單獨的segue?並在另一邊解開它?例如:在表格視圖中,我點擊一個玩家的名字,它會繼續在另一個視圖控制器中顯示細節。在Swift中通過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) 
} 

回答

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

+0

這可能有助於包括在問題中發佈的'didSelectRowAt'方法中所需的更改。 – rmaddy

+0

@rmaddy,錯過了OP剛剛通過'playerName',更新了帖子。感謝提示。 –