2016-11-04 57 views
0

我想弄清楚如何從有序的方式在tableview中的單元格中獲取文本字段數據。到目前爲止,我可以在每個文本字段中鍵入一個檢索類型數據。要以正確的順序執行此操作,但用戶必須編輯第一個單元格...最後一個單元格,並且其他方式和數據的順序不正確。在Swift(3.1)表格視圖中從動態創建的單元格中獲取有序的TextField數據

例如:

我有程序創建5個細胞與文本框,

  • textfield1的:我在這裏輸入的第二
  • 文本字段2:我在這裏第四輸入
  • 文本字段3:我輸入這裏先
  • textfield4:我在這裏輸入第五個
  • textfield5:我在這裏輸入第三個

我現在擁有它的方式我的數據數組看起來與這個數據完全相同,因爲它是基於何時輸入而不是單元格的順序進行存儲的。 我想鍵入上面的例子,但我的數據出來是這樣的:

  • textfield1的:我打先在這裏
  • 文本字段2:我打這裏第二
  • 文本字段3:我打這兒第三
  • 文字欄:我在這裏輸入的第四
  • 文字欄:我打這兒第五

這裏是我的文本框編輯代碼:

@IBAction func TitleEditBegin(_ sender: UITextField) { 
} 

@IBAction func TitleEditEnd(_ sender: UITextField) { 
    print(sender.tag) // Debug 
    titleArray.append(sender.text!) 
} 

我知道暫時還有其他更改會附加到titleArray,但我想先解決順序問題。

謝謝!

編輯:我忘了在我是如何創建的單元格添加的代碼如下:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = TitleSessionTableView.dequeueReusableCell(withIdentifier: textCellIdentifier, for: indexPath) as! TitleSessionCell 

    cell.SessionTitleLabel.text = "Title" 
    // cell.SessionTitleField.text = "Default" 
    cell.SessionTitleField.tag = indexPath.row 
    cell.SessionTitleField.delegate = self 
    print(indexPath.row) // Debug 

    return cell 

} 

編輯2:添加在那裏我定義文本字段。

import Foundation 
import UIKit 

class TitleSessionCell: UITableViewCell{ 

@IBOutlet weak var SessionTitleField: UITextField! 
@IBOutlet weak var SessionTitleLabel: UILabel! 


override func awakeFromNib() { 
    super.awakeFromNib() 
} 


} 

回答

0

最簡單的方法是使用我相信的字典。我會爲所有的textField分配一個不同的標籤。所以對於textField1,你會說textField1.tag = 1。我沒有看到你的文本字段的創建,所以很難顯示添加它的最佳方式,但是在處理之後,我會創建字典作爲類變量。

var textFieldDictionary: [Int: String] = [:] 

,然後在文本添加到它像這樣:

if sender.text != nil && sender.text != "" { 
    textFieldDictionary[sender.tag] = sender.text 
} 

然後當你想要檢索的信息,做這樣的事情:

for i in 0..<biggestTextFieldNumber { 
    if let text = textFieldDictionary[i] { 
     //do something with text 
     print(text) 
    } 
} 

或者你可以只抓住具體的數字值,只要你需要他們使用:

textFieldDictionary[numberYouWant] 

我希望這有助於!

+0

雖然我現在的問題是,無論先編輯哪個文本字段,都會給出sender.tag = 0。所以一旦發生,其他所有內容都會出現重擊。有沒有辦法調用單元格來獲取它的標籤? – rutheferd

+0

你可以發佈你的cellForRow函數 – Sethmr

+0

我做了編輯 – rutheferd

相關問題