2016-05-21 7 views
0

私はテーブルビューを通してプレーヤーを表示するアプリを持っています。ユーザーは新しいプレーヤーを「追加」して名前、高さ、体重、画像などを入力することができ、保存されると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 
     } 

    } 
} 

私は、ユーザーが新しいプレーヤーを追加し、情報を入力するビューコントローラ内のテーブルビューを実装しようとしています。このテーブルビューでは、ユーザーがプレイしたチームまたは年を追加できます(エントリ数が異なるため、テーブルビューを使用しています)。私の質問はこれについて最善の方法は何ですか?今、私はこの特定のテーブルビューのためにTeams.swiftという名前の第2クラスを持っていますが、これを行うにはこれが最善の方法ですか?考え方は、このデータを詳細ページのテーブルビューに表示することです(エントリ数が異なるためです)ので、どのテーブルビューから別のテーブルビューにデータを渡すのですか?

私は[Teams]クラスを削除して[Player]クラスの下に置く必要がありますか?どんな考えにも感謝します!

+0

をそれはあなたを配布するためには良いSI単一のViewCoに複雑なコードを書き込まないようにするコントローラ。しかし、それはあなたのアプリケーションの流れに依存します。 – 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では、slectedPlayer = cell.playerに「メンバープレーヤーはありません」と表示されます。cell.playerはどこから取得しましたか? –

+0

ねえ、あなたのセルに別のクラスを作ることをお勧めします。そのクラスでは、プロパティPlayer(プレーヤクラスのインスタンス)を作成します。これはUIOutletでなければなりません。プレーヤーに関する情報を持ち運ぶのにそれを使用してください。 –

+0

このビデオをもっとよく理解するには、このビデオをご覧ください: "XCode 5チュートリアルテーブルビューパート1 - テーブルへのポピュレート - Geeky Lemon Development" –

関連する問題