2016-09-13 19 views
0

現在、私はtableViewを持っています。セルが押されたときに、特定のデータを表示したいと思います。 tableViewは現在2つのセル 'Set One'、 'Set Two'を持っています。iOS - tableViewから情報を表示didSelect

タイトルが 'Set One'のセルが選択された場合、次のView Controllerでこのセルのデータを表示します。私は最初のセルに押した場合のViewControllerで

// MusicSet One 
defaultMusicSet!.uri = "spotify:track:1puJlKuYGH58SAFgXREUpE" 
defaultMusicSet!.duration = 30.0 
defaultMusicSet!.starttime = 40.0 
defaultMusicSet!.xfade = 10.0 
defaultMusicSet!.voiceover = "1.25s Next Up.mp3" 

// MusicSet Two 
defaultMusicSet!.uri = "spotify:track:59XO64Te17WcmnmMQXQbOj" 
defaultMusicSet!.duration = 30.0 
defaultMusicSet!.starttime = 34.75 
defaultMusicSet!.xfade = 10.0 
defaultMusicSet!.voiceover = "1.25s Rest.mp3" 

私は「txtUri」と呼ばれるテキストフィールドを持って、「txtDuration」など今私は//表示したいと思い:ここ

は、コアデータからのデータがありますMusicSet 1つのデータのみです.2番目のセルを押すと// MusicSet 2のデータのみが表示されます。

私はコードがtableView(didSelect)内に入る必要があることを知っていますが、特定の情報を表示するにはどうすればよいのでしょうか?

これは機能しませんが、私はこのようなものが必要であることを知っていますか?または類似している...

let musicData: playViewController? 

musicData?.txtUri.text = Music.DefaultMusicSet.uri 

すべてのヘルプは素晴らしいでしょう!

+0

新しい 'musicData' VCを作成してプッシュ/表示する必要があります。 'txtUri'がUI要素の場合、まだ作成されていないのでクラッシュします。 – ohr

答えて

1
  1. 配列にデータMusicSetを追加します。

    var arrMusicSet:[[String:AnyObject]]! = [] 
    
  2. は、ビューコントローラへの表のセルからセグエを作成します。

  3. IBInspectorでSegue Identifierを設定します。

  4. セルを押すと、セグが発動します(didSelectRowAtIndexPathは不要です)。転送musicSetを取り上げるビューコントローラの変数を定義し

    // MARK: - Navigation 
    
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
        if segue.identifier == "MySegueIndentifier" { 
         if let destVC = segue.destinationViewController as? MyViewController { 
    
          let selected = self.tableview.indexPathForSelectedRow!.row 
          destVC.musicSet = arrMusicSet[selected]     
         } 
        } 
    } 
    
  5. は今prepareForSegueメソッド内で選択された行に応じMusicSetを取得します。

    var musicSet: MusicSet! 
    
  6. ここで、musicSetからラベルに値を割り当てます。

関連する問題