我创建了一个静态tableView,并希望将每个tableViewCell(所有单元格都是不同的自定义tableViewCells)的数据保存到CoreData。如何在按下按钮时遍历所有TableViewCells?我没有使用Storyboard,所以我没有IBOutlets。
编辑:对不起,也许我应该指出我的问题。请参阅下面的代码。 我有3个CustomCells。 FirstCustomCell包括一个Textfield,SecondCustomCell包含一个UIPickerView,ThirdCustomCell包含一个UIDatePicker。控制器还包括saveButton()。如果我按下按钮我想从TextField,UIPickerView和UIDatePicker获取输入。//TableViewController
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.row {
case 0:
return tableView.dequeueReusableCell(withIdentifier: cellId1) as! FirstCustomCell //includes a UITextField
case 1:
return tableView.dequeueReusableCell(withIdentifier: cellId2) as! SecondCustomCell //includes a UIPickerView
case 2:
return tableView.dequeueReusableCell(withIdentifier: cellId3) as! ThirdCustomCell //includes a UIDatePicker
default:
return UITableViewCell(style: .default, reuseIdentifier: nil)
}
}
如何在TableViewController中的saveButton()上访问TextField,UIPickerView和UIDatePicker的输入?
答案 0 :(得分:3)
您不应该在单元格中存储数据。您应该有一个模型对象来保存单元格中的数据,并将数据安装到单元格中。然后,如果用户编辑该数据,您应该在编辑时收集编辑并将其应用到模型中。
然后,您可以干净利落地将模型持久保存到Core数据中。
现在你正在使用一个静态表视图,这样你就可以使用你正在使用的方法,但这并不是说这是一个很好的方法 - 它绝对不是。
对于普通的表格视图,屏幕上会有更多的单元格,并且表格视图会循环使用单元格,并在用户滚动它们时重复使用它们。当单元格滚出屏幕时,其字段中的设置将被丢弃。
答案 1 :(得分:1)
简短回答:您不必遍历所有表格视图行。原因如下:
你应该做什么: