2016-05-21 55 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上。 –

相关问题