2017-03-07 64 views
0

我创建了一个静态tableView,并希望将来自每个tableViewCell(所有单元格都是不同的自定义tableViewCells)的数据保存到CoreData。如何迭代所有按钮按下的TableViewCells?我没有使用Storyboard,所以我没有IBOutlets。Swift:如何遍历按钮上的所有tableViewRows按

编辑:对不起,也许我应该指定我的问题。请参阅下面的代码。 我有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从文本字段,UIPickerView和的UIDatePicker访问saveButton()输入?

+0

这些单元格模板是如何定义的?用XIB文件? –

+0

作为一个类继承UITableViewCell – eberhapa

+0

好吧,但你的单元格的自定义字段是如何定义的? –

回答

1

简短回答:您不会遍历所有表格视图行。原因如下:

  • 这是一个静态表格视图。这意味着您以编程方式创建了所有表格视图单元格(因为您不使用故事板)。这意味着你确切知道有多少个单元格。

你应该做的:只要你有一个静态表视图

  • 声明属性。
  • 如果每个表格视图单元格都有UITextField/UILabel/UISwitch/UIButton ...,它包含您需要的数据,请声明UITextField/UILabel/UISwitch/UIButton ...属性并访问其数据以保存到核心数据。
+0

请看我最新的问题。我现在试过的,我工作,但我不知道它的正确性是做一个存储FirstCustomCell的属性,并将此属性作为cellforrowat中的一个单元返回,而不是将这个单元退出。这种方法是否正确? – eberhapa

+0

这样做绝对没问题。请查看本教程http://derpturkey.com/create-a-static-uitableview-without-storyboards/ –

3

您不应该将数据存储在您的单元格中。您应该有一个模型对象来存储单元格中的数据,并将数据安装到单元格中。然后,如果用户编辑了这些数据,那么您应该在编辑时收集这些编辑并将其应用到您的模型中。

然后,您可以干净利落地将模型保存到核心数据。

现在你正在使用一个静态表视图,所以你可能能够逃脱你正在使用的方法,但这并不是说这是一个很好的方法来做到这一点 - 它绝对不是。

对于一个普通的表格视图,屏幕上会显示更多的单元格,并且表格视图可以循环使用单元格,并在用户滚动时重用它们。当一个单元格从屏幕上滚动时,其字段中的设置将被丢弃。

+0

我有一个模型并将数据安装到我的单元格。我遇到了如何从文本字段输入中收集数据并将其设置回模型的问题。我在编辑的问题中发布了我的真实代码(没有从模型安装数据的部分,以缩短代码)。 – eberhapa