2016-09-13 77 views
0

我目前有一个tableView,当单元格被按下时,我想显示某些数据。 tableView目前有两个单元格'Set One','Set Two'。iOS - 显示来自tableView的信息didSelect

如果单元格的标题'Set One'didSelect,那么我希望下一个View Controller显示这个单元格的数据。

这里是从核心数据的数据:

// 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只有一个数据,如果按第二个单元格,它将只显示// MusicSet两个数据。

我知道代码将不得不去tableView(didSelect),但如何显示某些信息我不是100%确定如何做到这一点?

这不起作用,但我知道我需要这样的东西?或类似...

let musicData: playViewController? 

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

任何帮助将是伟大的!

+0

您必须创建并推送/显示新的'musicData'VC。如果'txtUri'是一个UI元素,你会崩溃,因为它还没有被创建。 – ohr

回答

1
  1. 添加数据MusicSet到一个数组:

    var arrMusicSet:[[String:AnyObject]]! = [] 
    
  2. 创建从表单元格到视图控制器一个Segue公司。

  3. 在IBInspector中设置Segue标识符。

  4. 现在当你按下单元格时,segue会被解雇,而不需要didSelectRowAtIndexPath

  5. 现在根据所选行获得MusicSet内prepareForSegue方法:

    // 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]     
         } 
        } 
    } 
    
  6. 定义的视图控制器一个变量,它会占用转发musicSet。

    var musicSet: MusicSet! 
    
  7. 现在从这个musicSet为您的标签赋值。