sourcecode

UIPickerView가 로드된 후 행 선택

codebag 2023. 7. 27. 21:57
반응형

UIPickerView가 로드된 후 행 선택

나는 iPhone 데이터베이스 앱을 가지고 있습니다.UIPickerView표의 데이터를 사용합니다.다른 테이블의 데이터에서 선택한 행을 특정 행으로 설정합니다.

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

어디로 전화해야 합니까?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 항목을 선택해야 하는 일반적인 문제가 있습니다.이 문제는 일련의 이벤트와 관련이 있습니다.이전 게시물을 읽어보니 뷰 컨트롤러 ViewDidLoad 이벤트에서 [pickerViewselectRow:n]이 일반적으로 호출되는 것 같습니다.그러나 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 hierarchy에 추가하기 전이나 후에 보기를 초기화한 직후 selectRow:를 호출하려고 했습니다.그러나 iPad에서 selectRow 호출은 결과를 얻지 못했습니다.performSelector: withObject: afterDelay: 호출을 사용하여 0.1초 기다렸다가 선택한 행: inComponent: animated:를 실행했습니다.이것은 아이폰과 아이패드에서 예측 가능한 결과를 낳았습니다.

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

반응형