2015-05-07 105 views
1

我有一個視圖控制器,並且在這個視圖控制器中有一個tableview。我正在管理表格視圖控制器中的表格。但我需要從視圖控制器發送數據到tableview控制器。我怎樣才能做到這一點 ?將數據傳遞給表視圖控制器

這是我的視圖控制器:

class SettingsViewController: UIViewController { 
... 
} 

這是我的表視圖控制器:

class SettingsTableViewController:UITableViewController { 


    @IBOutlet var notificationsSwitch: UISwitch! 
    @IBAction func notificationsClicked(sender: UISwitch) { 
     if notificationsSwitch.on { 
      println("notifications on") 
     }else{ 
      println("notifications off") 
     } 
    } 

} 

故事板:

enter image description here

+0

println?是不是Java? – Kex

+1

不,它是在迅速 – Okan

+0

可能重複[視圖控制器之間傳遞數據](http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – dasdom

回答

1

使用行爲塞格斯組合準備好了reForSegue功能。本文所介紹的:

Storyboards Tutorial in Swift: Part 2

添加您的推賽格瑞打開的SettingsTableViewController的標識符,並添加以下功能視圖控制器。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if segue.identifier == "unwindToTableView" { 
     let destinationController = segue.destinationViewController as! SettingsTableViewController 
     destinationController.notificationsSwitch.setOn(true, animated:true) 
    } 
} 

假設你想通過從settingsViewController到表中的一些布爾,你會碰到這樣的:

var notifications: Bool = false 

在界面生成器,一個標識符添加到推SEGUE是這樣的: Push segue identifier in IB

編輯:最初稍微誤解了問題,因爲數據不是從SettingsTableViewController傳遞到settingsViewController,而是以其他方式傳遞。使用segues和prepareForSegue通常是將數據傳遞給另一個viewController的方式。

edit2:改變了在prepareForSegue函數中設置開關的方式。

+0

我不使用segues進行此操作。我無法理解你的答案。 – Okan

+0

segues是在視圖控制器之間傳遞數據的方式。我已經編輯了你的問題的答案。 –

+0

我現在明白你的意思了。但我還有一個問題。我從服務器獲取數據,所以我需要等待數據,然後在需要時使用segue。我怎樣才能做到這一點 ? – Okan

相關問題