2015-08-19 67 views
1

我有一個UITableView與幾個單元格。每個單元格都有一個 標籤和一個UITextField。當我加載ViewController時,UITextFields有初始值,用戶可以編輯這些值。現在我想添加一個保存按鈕來保存更改,但是我編輯後在獲取UITextFields中的值時遇到問題。我認爲我需要爲文本框使用標籤,但我不知道如何。這裏是我的代碼:如何獲取UITableView中可編輯單元格的值? Swift

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:EditProfileCell = tableView.dequeueReusableCellWithIdentifier("profile") as! EditProfileCell 
    if (indexPath.row == 1){ 
    cell.setRow("label", value: "initial value") 
    cell.itemValue.tag = indexPath.row 
} 

@IBAction func saveTapped(sender: UIButton) { 
    print(self.tableView(profileTableView, cellForRowAtIndexPath: NSIndexPath(forRow: 1, inSection: 1)).viewWithTag(1)) 
} 

當保存按鈕被竊聽,它打印的初始值,而不是編輯後的值。編輯後我需要獲取幫助。

EDIT1:

我發現我可以在didSelectRowAtIndexPath方法功能編輯的值。但問題是當我點擊文本字段(文本字段進入編輯模式)時,didSelectRowAtIndexPath不會被調用,直到我點擊單元格內的空間但在文本字段之外。所以我的問題變成了當我只點擊文本框時如何觸發didSelectRowAtIndexPath。

+0

對類和is-a vs has-a的理解應該對你有很大的幫助。 –

+0

http://stackoverflow.com/questions/14562551/how-to-get-the-cell-value-of-a-selected-cell-from-table-view-in-iphone –

回答

0

的問題是,當你調用saveTapped裏面您呼叫cellForRowAtIndexPath,並在那裏你必須:

cell.setRow("label", value: "initial value") 

基本上這就是爲什麼你所得到的初始值。另一個問題是表格視圖上的單元格被重用。也就是說,你可以有1000000條記錄,但表格視圖將只創建〜9-12個單元格,並將使用它們來顯示任何1000000行的信息。

你需要做的是有一個model。某種對象,您可以在其中存儲和檢索單元格的這些值。一個自然的選擇是你的情況下的數組包含字符串。請仔細檢查tutorial,並特別注意NSArray *tableData;在那裏的使用情況。

祝你好運! :D

相關問題