2017-01-17 98 views
0

我的應用程序出現問題。我有一個表格視圖,每個單元格都由一個文本框組成。當我寫入並向下滾動時,比向後滾動,我寫入的數據就消失了。當我滾動瀏覽TableView時,UItextField數據會消失 - Swift

這些都是我的一些功能的ViewController

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, UIScrollViewDelegate { 

    var arrayOfNames : [String] = [String]() 
    var rowBeingEdited : Int? = nil 

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return initialNumberOfRows 
    } 

    var count: Int = 0; 
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell: TableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! TableViewCell 



     if(arrayOfNames.count > 0 && count < arrayOfNames.count) { 
      cell.TextField.text = self.arrayOfNames[indexPath.row] 
     }else{ 
      cell.TextField.text = "" 
     } 

    count += 1 



     cell.TextField.tag = indexPath.row 
     cell.TextField.delegate = self 
     return cell 
    } 

func textFieldDidEndEditing(_ textField: UITextField) { 
    let row = textField.tag 
    if row >= arrayOfNames.count { 
     for _ in ((arrayOfNames.count)..<row+1) { 
      arrayOfNames.append("") // this adds blank rows in case the user skips rows 
     } 
    } 

    arrayOfNames[row] = textField.text! 
    rowBeingEdited = nil 

} 

func textFieldDidBeginEditing(_ textField: UITextField) { 
    rowBeingEdited = textField.tag 
} 
} 

正如你可以看到,我已把全部的文本框我的書面文字到一個數組。任何幫助,將不勝感激。

在此先感謝

回答

3

當你回滾tableView(tableView: cellForRowAt:)時再次被調用。在該方法中,每次調用時都會增加計數,因此不是使用第一種情況,而是使用第二個條件語句來設置cell.TextField.text = "",因爲計數可能大於arrayOfNames.count。你在用什麼count?也許你應該重新考慮如何將這個部分編碼得更好一些。

+0

計數得到增加,因爲我會得到一個反彈錯誤試圖訪問我的數組中的元素 – jim

+1

而不是也許做'indexPath.row TheAmateurProgrammer

+0

謝謝,這工作! – jim

1

您的單元格被重新創建。所以你失去了它們。在重新創建文本時,您可以使用方法PrepareForReuse設置文本。

+0

你能指導我多一點關於如何做到這一點嗎?..我找不到該方法 – jim

相關問題