Development Tip

UIPickerView가로드 된 후 행 선택

yourdevel 2020. 10. 20. 08:12
반응형

UIPickerView가로드 된 후 행 선택


UIPickerView테이블에서 데이터 를로드하는 iPhone 데이터베이스 앱이 있습니다. 선택한 행을 다른 테이블의 데이터에서 특정 행으로 설정하고 싶습니다.

예 : UIPickerViewiPhone 사용자의 친구 이름이 X 개로로드되어 있다고 가정 해 보겠습니다 (이름의 수는 가변적이며 1 개 또는 1000 개가 될 수 있으며 모두 사용자가 데이터베이스에 입력합니다). iPhone 사용자는 현재 가장 친한 친구가 TED 라는 기본 설정을 가지고 있습니다. 나는 표시 될 때 TED에UIPickerView 위치하기를 원합니다 .

어디로 전화 selectRow합니까?

시도해 보았지만 viewDidAppear호출되지 않아 titleForRow모든 종류의 이상한 동작이 발생했습니다. viewDidLoad그리고 viewWillAppear나는 아직 피커에 데이터 소스에서 무엇을 알 수 없기 때문에, 질문 밖으로있다.


데이터를 검색 한 후 호출하십시오. 나는 당신이 데이터를 어디에서로드하는지 모르겠다. 그래서 이것은 작동해야하는 것에 대한 모형 일 뿐이다. 이것이 말이되지 않는다면, 데이터를로드하는 위치를 알려주세요.

-(void)viewDidLoad
{
    // load data from sql
    // self.someDataArray = DATAFROMSQL
    [picker reloadAllComponents];
    [picker selectRow:0 inComponent:0 animated:YES];
}

UIPickerView가 처음 표시 될 때 (기본값) UIPickerView 항목을 선택해야하는 경우 일반적인 문제가 있습니다. 문제는 일련의 이벤트와 관련이 있습니다. 이전 게시물을 읽은 결과 [pickerView selectRow : n]은 일반적으로 뷰 컨트롤러 ViewDidLoad 이벤트에서 호출되는 것으로 보입니다. 그러나 UiPickerView 데이터는 ViewDidLoad 이벤트 이후에만로드되므로 ViewDidLoad의 선택 코드가 적용되지 않습니다. 문제를 해결하려면 ViewDidAppear에 선택 코드를 배치하십시오.

- (void) viewDidAppear:(BOOL)animated {
[m_pickerView selectRow:nSelectedItem inComponent:0 animated:YES]; }

하위 뷰로 UIView포함하는 초기화 할 때마다 이것을 배치 하십시오 UIPickerView.

[myPickerView selectRow:rowWithTedsName inComponent:columnWithNames animated:NO];

4.3 SDK의 구성 요소 로딩 동작이 iPhone과 iPad간에 다릅니다. iPhone에서는 subview 계층 구조에 추가하기 전이나 후에 뷰를 초기화 한 직후 selectRow :를 호출하려고했습니다. 그러나 iPad에서는 selectRow 호출이 결과를 산출하지 못했습니다. performSelector : withObject : afterDelay : selectRow : inComponent : animated :를 실행하기 전에 0.1 초 동안 대기하도록 호출을 사용하여 마무리했습니다. 이것은 iPhone과 iPad에서 예측 가능한 결과를 가져 왔습니다.


Swift의 경우 간단합니다.

self.picker?.selectRow(0, inComponent: 0, animated: true)

선택한 행을 영구적으로 강조 표시하려면 다음을 사용하십시오.

myPickerView.subviews[0].subviews[0].subviews[2].backgroundColor = myPickerView.tintColor;

참고 URL : https://stackoverflow.com/questions/812995/select-row-after-uipickerview-is-loaded

반응형