2011-12-06 4 views
0

레코드를 데이터베이스에 삽입하는 응용 프로그램을 구축하고 미리 정의 된 필드에 적절한 항목을 포함하도록 조회 테이블에서 해당 데이터베이스의 항목을 가져옵니다. 분명히 선택 도구가이 방법에 가장 적합한 방법이지만 문제가 발생합니다. 두 가지 페이지가 두 개 사이에 약 15 개의 서로 다른 선택기가 있습니다. 이제 사용자가 필드를 선택할 때 팝업이 나타나기 때문에 선택기를로드해야합니다.iOS 5 picker에 배열을 프로그래밍 방식으로 추가하기

내가 찾은 모든 온라인 자습서와 예제는 GUI 편집기를 사용하여 선택기를 데이터 소스에 연결하거나 하나의 단일 데이터 소스를 선택기로 별도의 파일 (사용하지 않음)로 사용하고 있습니다. .

호출시 피커에 NSMutableArray를로드하는 방법은 무엇입니까?

감사합니다.

답변

3

UIPickerViewDataSourceUIPickerViewDelegate을 준수하며 머리글에 @property (retain, nonatomic) NSMutableArray *dataArray;이 정의 된 모든 필수 데이터 원본/대리자 메서드를 구현하는 데이터 소스 및 대리인 클래스가 있어야합니다. 데이터 소스/대리자 클래스의 메서드 (예 : - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component)가 dataArray에서 문자열 등을로드하도록합니다. 그런 다음 피커를 만들거나 변경할 때 다음을 수행하십시오.

MyPickerSource *source = [[MyPickerSource alloc] init]; 
source.dataArray = [NSMutableArray arrayWithArray:<PreloadedArray>]; 
[picker setDelegate:source]; 
[picker setDataSource:source]; 
[picker reloadAllComponents]; // If re-using an old picker 
[source release]; 
[self addSubview:picker];  // If creating a new picker 

희망이 있습니다.

+0

저는 이것을 구현했으며 작동합니다! 나는 그것을 완벽하게 작동시키기위한 몇 가지 트위크를 가지고 있지만, 나는 그 피커의 작업 모델을 가지고있다. 감사! –

+0

좋아요! 나중에 참조 할 수 있도록 변경 한 사항은 무엇입니까? – jrtc27

2

당신은 당신이 당신의 NSMutableArray에서 데이터를 그릴 수 있습니다 이러한 방법을 통해 UIPickerViewDataSourceUIPickerViewDelegate 및 구현에 필요한 기능, 즉 numberOfRowsInComponent:titleForRow:를 사용하고 싶습니다.

업데이트 할 때 중요한 점은 pickerview에서 reloadAllComponents으로 전화하는 것입니다. 목록에서 구성 요소를 업데이트 할 때 selectRow: inComponent: animated:NO을 사용하여 선택 도구를 적절한 선택으로 스크롤 된 상태로 유지할 수도 있습니다.

관련 문제