2016-05-21 103 views
0

我有一個應用程序,通過Tableview顯示玩家。用戶可以「添加」一個新玩家並輸入他的名字,身高,體重,圖片等等,一旦保存就會添加到桌面視圖中。他們還可以點擊每個玩家,並將它們帶到玩家詳情視圖控制器,在其中顯示您輸入的所有信息(名稱,身高,體重,投擲,蝙蝠,位置等等)。這是當前的代碼,當用戶點擊一個玩家帶他們到球員詳細頁面:Tableview將相同的數據傳遞給另一個Tableview

var player2 = [Player]() 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "detail" { 
     let playerDetailScreen = segue.destinationViewController as! PlayerDetailViewController 

     if let selectedPlayerCell = sender as? PlayerListTableViewCell { 
      let indexPath = tableView.indexPathForCell(selectedPlayerCell)! 
      let selectedPlayer = player2[indexPath.row] 

      playerDetailScreen.playereDetail = selectedPlayer 
     } 

    } 
} 

我想實現當用戶添加一個新的播放器和輸入信息的視圖控制器內的tableview 。這個表格視圖是用戶可以添加團隊或某人玩過的年份的位置(我使用的是表格視圖,因爲條目數量可能會有所不同)。我的問題是什麼是最好的方式去這個?現在我有一個名爲Teams.swift的第二個類用於這個特定的表視圖,但是這是實現它的最好方法嗎?這個想法是在詳細信息頁面的tableview中顯示這些數據(再一次,因爲條目數量會有所不同),那麼如何將數據從一個tableview傳遞到另一個?

我應該消除[隊]類,並把它放在[Player]類下?任何想法,將不勝感激!

+0

這對好分發您功能,而不是在單個ViewCo中編寫混亂的代碼ntroller。但這取決於你的應用程序流。 – Evana

回答

0

首先,我會建議使用:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    // what happens when user selects a cell 
let cell = self.tableView.cellForRowAtIndexPath.indexPath // This will give you cell that was selected 
let selectedPlayer = cell.player // This gives you the instance of the player (Benefit of using player class) 
self.performSegueWithIdentifier("identifier", sender : selectedPlayer) 

//^This will automatically call prepareforseque method. 
} 

接下來,裏面prepareforsegue方法,這樣做:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
if segue.identifier == "detail" { 
    let playerDetailScreen = segue.destinationViewController as! PlayerDetailViewController 

    let selectedPlayer = sender as! Player 
    playerDetailScreen.name = self.selectedPlayer.name 
    playerDetailScreen.height = self.selectedPlayer.height 
    ... so on. 
    // So, remember to create property for each name, height, etc. 
    // inside playerDetailScreen 
    // This is how you can transfer data 


    } 

} 

}

+0

太棒了,謝謝你的建議!在didSelectRowatIndexPath中,對於let slectedPlayer = cell.player,它表示「沒有成員播放器」您從哪裏獲取cell.player? –

+0

嘿所以,我會建議你爲你的細胞製作一個單獨的課程。在該類中創建一個屬性Player(玩家類的實例)。這不一定是一個UIOutlet,只是用它來攜帶有關播放器的信息。 –

+0

爲了更好地理解這一點,請觀看以下視頻:「XCode 5教程表視圖第1部分 - 填充桌面 - 怪異的檸檬開發」在youtube上。 –

相關問題