아이폰 화면에는 TableView와 UIPickerView라는 두 개의 컨트롤이 있습니다. TableView에서 단일 셀을 선택하면 의류 유형 목록을 보여주는 다른 화면으로 이동합니다. 목록에서 단일 의류 항목을 선택하면 첫 번째 화면으로 돌아갑니다. 선택에 따라 UIPickerView의 구성 요소 수가 변경 (1-4)되고 각 구성 요소에 관련 데이터가 채워집니다.보기가 나타날 때마다 UIPickerView widthForComponent 대리자 메서드가 호출되지 않는 이유는 무엇입니까?
의 당신이 당신 의류 유형 목록에서 세 가지 항목을 가지고이 선택 될 때 각 항목이 UIPickerView 구성 요소의 특정 숫자를해야한다고 가정 해 봅시다 :
벨트 - 3 개 구성 요소 (100)의 폭, 55, 100 을 (100)의 폭, 100, 55 4 개 구성 요소, 50
시나리오 # 1 - - 브래지어는 - (55)의 폭, 55, 55 기타 3 개 요소가
1.1을해야으로 모든이 - 당신은 선택 "Belt"의류 항목과 UIPickerView는 th와 함께 세 가지 구성 요소로 그려집니다. 각 구성 요소의 적절한 벨트 데이터. 구성 요소 너비는 100, 55, 100입니다.
1.2 - "기타"의류 항목을 선택하면 UIPickerView는 4 개의 구성 요소와 각 구성 요소의 적절한 기타 데이터로 그려집니다. 구성 요소 너비는 100, 100, 55, 50입니다.
1.3 - "Brassiere"의류 항목을 선택하면 각 구성 요소에 적절한 Brassiere 데이터가있는 3 가지 구성 요소로 UIPickerView가 그려집니다. 구성 요소 폭은 55, 55, 55
시나리오 # 2입니다 -
1.1
을 다시 그려하지 구성 요소 폭 - 당신은 "벨트"의류 항목을 선택하고 UIPickerView 적절한 벨트 데이터로 3 개 구성 요소와 함께 그려진 각 구성 요소. 구성 요소 너비는 100, 55, 100입니다.1.2 - "Brassiere"의류 항목을 선택하면 각 구성 요소에 적절한 Brassiere 데이터가있는 3 개의 구성 요소로 UIPickerView가 그려집니다. 그러나 구성 요소의 너비는 여전히 55,55,500이 아닌 100, 55, 100입니다.
1.3 - "기타"의류 항목을 선택하면 각 구성 요소에 적절한 기타 데이터가있는 4 개의 구성 요소로 UIPickerView가 그려집니다 . 구성 요소 너비는 100, 100, 55, 50입니다.
1.2 - "Brassiere"의류 항목을 선택하면 각 구성 요소에 적절한 Brassiere 데이터가있는 3 가지 구성 요소로 UIPickerView가 그려집니다. 구성 요소의 폭은 지금 올 - 그것은 UIPickerView widthForComponent 위임 방법처럼 보이는 코드를 단계별로 55, 55, 55
에만 호출 될 때 UIPickerView 변화의 성분 수.
매번이 위임 메서드를 강제로 실행할 수있는 방법이 있습니까?
업데이트 - 다음 코드를 사용하여 viewWillAppear 위임에 10.26.09
내가 [호출 오전 UIPickerView의 reloadAllComponents : 사전에
-(void)viewWillAppear:(BOOL)animated {
...
self.PopulatePickerArrays; // Populate components based on selection
[sizePicker reloadAllComponents];
...
}
감사합니다.
나는 이미이 작업을 수행하고 있습니다 (위의 코드 예 참조). widthForComponent 대리자 메서드는 UIPickerView의 구성 요소 수가 변경 될 때만 호출됩니다. – billmaya
흠. 난 그냥 버튼을 누르면 구성 요소의 변화 번호를 구현하려하고 잘 작동 ... onBtnPlusComponent의 코드는 내 게시물에 있습니다. – Morion