2017-03-07 8 views
0

정적 tableView를 만들고 CoreData에 각 tableViewCell (모든 셀은 다른 사용자 정의 tableViewCells 임)의 데이터를 저장하려고합니다. 버튼 누르기에서 모든 TableViewCell을 반복하는 방법은 무엇입니까? Storyboard를 사용하지 않기 때문에 IBOutlets가 없습니다.스위프트 : 버튼 누름시 모든 tableViewRow를 반복하는 방법

편집 : 죄송합니다, 내 문제를 지정해야합니다. 아래 코드를 참조하십시오. 3 개의 CustomCell이 있습니다. 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()에서 텍스트 필드, UIPickerView 및 UIDatePicker에서 입력에 액세스 할 수 있습니다 ?

+0

어떻게 셀 템플릿을 정의합니까? XIB 파일로? –

+0

클래스 UITableViewCell – eberhapa

+0

서브 클래 싱 좋아,하지만 어떻게 세포의 사용자 정의 필드가 정의되어 있습니까? –

답변

1

간단한 대답 : 모든 테이블 뷰 행을 반복하지 마십시오. 이유는 다음과 같습니다.

  • 정적 테이블보기입니다. 즉, 스토리 보드를 사용하지 않으므로 프로그래밍 방식으로 모든 테이블 뷰 셀을 만들었습니다. 즉, 얼마나 많은 세포가 있는지 정확히 알 수 있습니다.

당신은 어떻게해야하나요 : 정적 테이블보기있을 때마다

  • 선언 속성.
  • 각 테이블 뷰 셀에 필요한 데이터가 들어있는 UITextField/UILabel/UISwitch/UIButton ...이있는 경우 UITextField/UILabel/UISwitch/UIButton ... 속성을 선언하고 해당 데이터에 액세스하여 코어 데이터에 저장합니다.
+0

내 업데이트 된 질문을보십시오. 내가 지금 시도하고, 나는 작동하지만 그 올바른 경우 FirstCustomCell 저장하고 셀을 dequeuing 대신 cellforrowat있는 셀로이 속성을 반환하는 속성을 만드는 것일지 모르겠다. 이 접근법이 맞습니까? – eberhapa

+0

그렇게하는 것이 좋습니다. 이 자습서 http://derpturkey.com/create-a-static-uitableview-without-storyboards/를 확인하십시오. –

3

셀에 데이터를 저장하면 안됩니다. 셀의 데이터를 보유하는 모델 객체가 있어야하며 데이터를 셀에 설치해야합니다. 그런 다음 사용자가 해당 데이터를 편집하면 편집 된 내용을 수집하여 모델에 적용해야합니다.

그러면 모델을 핵심 데이터에 깨끗하고 쉽게 유지할 수 있습니다.

지금은 정적 테이블보기를 사용하고 있으므로 사용하는 접근 방식을 벗어날 수는 있지만 좋은 방법이라고 할 수는 없습니다. 가장 확실한 것은 아닙니다.

정상적인 표보기의 경우 화면에 표시되는 것보다 많은 셀이 있고 표보기는 셀을 재활용하고 사용자가 화면을 스크롤 할 때이를 재사용합니다. 셀이 화면에서 벗어나면 해당 필드의 설정이 삭제됩니다.

+0

모델이 있고 셀에 데이터를 설치합니다. 텍스트 필드 입력에서 데이터를 수집하여 모델로 다시 설정하는 방법에 문제가 있습니다. 편집 된 질문에 내 액트ール 코드를 게시했습니다 (코드를 줄이기 위해 모델에서 데이터를 설치하지 않고). – eberhapa