2017-03-07 61 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