반응형
버튼 누름을 기반으로 UIPickerView (새 데이터 배열 포함)를 어떻게 다시로드 / 새로 고침합니까?
내가 선택기를 원했다면, 주 / 지방의 경우 예제를 보지 못했지만 위에 표시된 US / Can / Mex의 선택기를 모의했습니다. UIPickerView에 대한 NSMutableArray를 동적으로 전환 한 다음 US / Can / Mex 버튼을 클릭 할 때마다 어떻게 든 다시로드 할 수 있는지 궁금하십니까 ??? 어떻게해야하나요? 나는 어떤 접근 방식을 취합니까. 초보자가 올바른 방향으로 단서를 찾을 수있는 사람을 찾습니다.
데이터 소스와 델리게이트를 구현해야합니다.
버튼을 누르면 배열 포인터를 적절한 배열로 설정합니다.
전화보다 [thePicker reloadAllComponents];
-(IBAction) usButtonPressed:(id)sender{
self.inputArray = self.usArray;
[self.thePicker reloadAllComponents];
}
-(IBAction) mexicoButtonPressed:(id)sender{
self.inputArray = self.mexicoArray;
[self.thePicker reloadAllComponents];
}
데이터 소스 메소드 :
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [self.inputArray count];
}
대리자 메서드 :
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [self.inputArray objectAtIndex:row];
}
스위프트 : xcode 6.1
// 선택기의 구성 요소를 다시로드합니다 (트리거 작업 또는 버튼 내에서 사용됨).
self.pickerControl.reloadAllComponents();
전화로
thePicker.delegate = self;
다시 한 번 새로운 정보로 선택기보기를 강제로 새로 고칠 수있었습니다.
xcode-8의 신속한 3에서는 다음과 같이 didSelectRow 함수를 작성합니다.
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.view.endEditing(false)
yourPickerView.selectRow(0, inComponent: 0, animated: true)
yourPickerView.reloadAllComponents();
}
여러 선택기를 사용하거나 스위치 블록을 사용하여로드 할 데이터를 결정하고 선택기를 다시로드합니다.
버튼 누르기 동작에서
[self.pickerView selectRow:0 inComponent:0 animated:YES];
스위프트 3 & 4
나는 같은 문제가 있었지만 해결책이 작동하지 않았습니다.
그런 다음 DispatchQueue를 사용합니다.
DispatchQueue.main.async(execute: {
self.picker.delegate = self
self.picker.dataSource = self
if self.pickerData.count > 0 {
self.pickerTextField.text = self.pickerData[0]
self.pickerTextField.isEnabled = true
} else {
self.pickerTextField.text = nil
self.pickerTextField.isEnabled = false
}
})
반응형
'code' 카테고리의 다른 글
페이지 조각 사이의 Android ViewPager 패딩 / 여백 (0) | 2020.12.27 |
---|---|
ViewDidLoad에서 Segue 수행 (0) | 2020.12.27 |
조각에서 활동을 시작하면 NullPointerException이 발생합니다. (0) | 2020.12.27 |
콘텐츠가 AJAX를 통해로드 된 후 jQuery가 작동하지 않음 (0) | 2020.12.27 |
AssertionError : 뷰 함수 매핑이 기존 끝점 함수를 덮어 씁니다 : main (0) | 2020.12.27 |