2015-06-10 33 views
0

我的第一個View Controller有一個TableView。需要幫助將數據添加到TableView

在第二個視圖控制器上,用戶將輸入數據並單擊一個按鈕。

我想要這個按鈕添加數據到表視圖,但我無法弄清楚如何做到這一點。

var textArray: NSMutableArray! = NSMutableArray() 

@IBOutlet weak var tableView: UITableView! 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.textArray.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    return UITableViewCell() 
} 



@IBOutlet weak var addData: UIButton! 

@IBAction func addData(sender: AnyObject) { 

    self.textArray.addObject(textField.text) 
    self.tableView.reloadData() 

} 

這也帶來了一個錯誤我reloadData行代碼。

+0

這可能會有幫助...在Objective-C中的答案,但原則保持不變。 http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers或http://stackoverflow.com/questions/25540141/how-can-i-pass-information-from-one-view-控制器到另一個 – Mike

回答

0

推測您所引用的代碼位於第二個視圖控制器中。該視圖控制器中的IBAction無法重新加載self.tableview,因爲該表位於第一個視圖控制器中。

要做你正在尋找的東西,所以有幾十個方法,每個都有優缺點。也許最容易實現的是:

  1. 在第二個視圖控制器中創建一個名爲textArray的公共變量。
  2. 將prepareForSegue中的公共變量設置爲第一個視圖控制器中表的數據源。
  3. 將字符串添加到第二個視圖控制器的IBAction中的變量self.textArray.addObject(textField.text)
  4. self.tableView.reloadData()行添加到第一個視圖控制器的viewWillAppear函數。
+0

對不起,我對此很陌生。我如何設置一個變量作爲數據源? – Sam

0

如果希望用戶能夠將數據保存在一個視圖中,然後將數據加載到另一個視圖中,則需要將數據保存在本地或服務器上。要保存在本地,您可以使用NSUserdefault。

讓用戶添加obejcts到數組。然後將該陣列保存在手機中,以便稍後使用NSUserdefault進行加載。

let defaults = NSUserDefaults.standardUserDefaults() 
defaults.setObject("yourArray", forKey: "nameYourArrayToGetItLater") 
defaults.synchronize() 

並使用此代碼將其取回,並將其加載到您的TableView中。

let defaults = NSUserDefaults.standardUserDefaults() 
defaults.stringForKey("nameYourArrayToGetItLater") 
"yourArrayforTheTabelView" = defaults 

如果要將TableView數據存儲在服務器上。你可能想看看這個教程:

http://www.appcoda.com/ios-programming-app-backend-parse/

祝你好運!

+0

如果您只想將數據從一個視圖傳遞到另一個視圖,則不需要在本地或服務器上保存任何內容,這就是傳遞變量的用途...... – Mike