這是我到目前爲止的代碼。我可以進入文本框並將其顯示在UITableView中,但只有在我重新加載頁面並返回之後。我想要輸入到文本框中,當我點擊「添加」時,它會自動出現在UITableView中。從文本字段添加entires到UITableView自動填充
@IBOutlet var itemTextField: UITextField!
@IBOutlet var table: UITableView!
var items: [String] = []
@IBAction func add(_ sender: Any) {
let itemsObject = UserDefaults.standard.object(forKey: "items")
var items:[String]
if let tempItems = itemsObject as? [String] {
items = tempItems
items.append(itemTextField.text!)
print(items)
} else {
items = [itemTextField.text!]
}
UserDefaults.standard.set(items, forKey: "items")
itemTextField.text = ""
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = items[indexPath.row]
cell.textLabel?.font = UIFont(name: "Type02", size: 20)
return cell
}
override func viewDidAppear(_ animated: Bool) {
let itemsOBject = UserDefaults.standard.object(forKey: "items")
if let tempItems = itemsOBject as? [String]{
items = tempItems
}
table.reloadData()
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
items.remove(at: indexPath.row)
table.reloadData()
UserDefaults.standard.set(items, forKey: "items")
}
}
刷新表,則剛過你在數組中追加數據,而不是做在viewDidAppear。 –
我試過這個解決方案,但沒有運氣......我必須回去一個ViewController並回到ViewController與文本字段和TableView,然後纔會出現...任何其他想法... – LeiLei1