2012-10-23 2 views
0

나는 UITableView을 가지고 있으며 모든 셀에는 피커 뷰가 있습니다. 사용자는 모든 피커의 가치를 개별적으로 변경할 수 있습니다.UITableViewCell 내부의 UIPickerView 로의 데이터 전달

어떤 셀의 pickerView가 변경되었는지 알아야합니다. 예를 들어, 사용자가 피커를 움직이면 셀 3임을 알게 될 것입니다.

그렇게 할 방법이 있습니까? 즉시 변경된 값을 가져올 필요는 없습니다. 테이블 뷰와 관련이없는 Go 버튼을 클릭했을 때 보내기보다는 배열에 저장할 수 있습니다.

+0

'UIImagePickerControllers'가 선택되고 있습니까? – NSTJ

답변

0

피커 뷰에 대한 포인터 배열을 저장하는 것이 좋습니다. 따라서 배열의 인덱스 0은 테이블 행 0 등의 선택보기를 가리 킵니다. 그런 다음보기 컨트롤러가 모든 선택기보기의 대리인인지 확인하십시오. UIPickerViewDelegate 프로토콜로 선언 된 pickerView:didSelectRow:inComponent: 메서드를 구현합니다. 이 메소드의 인스턴스는 매개 변수로 UIPickerView입니다. 값이 변경된 것입니다. 해당 선택기보기 행을 얻으려면 배열 indexOfObject: 메서드를 보낼 수 있습니다.

0

UITableViewCell의 하위 클래스를 만듭니다. 해당 하위 클래스는 업데이트하려는 항목에 대한 참조를 가져와야하며 그 다음에 피커에 간단하게 만들거나 IBOutlet 링크를 만들어 피커의 대리인이 될 수 있습니다.

그래서 휴대가 있어야한다 : 세포가 직접 데이터 모델을 업데이트 처리 할

- (void) passStuff:(NSMutableDictionary *)datamodel key:(NSString *)key values:(NSArray *)values { 
    _privateWeakRefDataModel = datamodel; 
    _privateCopyKey = key; 
    _privateValues = values; 
    [picker reloadData]; 
} 

#pragma mark - Picker Delegate Code here 

이 방법을. 코드를 훨씬 깨끗하게 유지합니다.

관련 문제