2011-04-12 2 views
0

UI 문제가 있습니다. 처음에는 2 개의 다른 라벨을 채우기 위해 2 개의 피커를 갖고 싶었습니다. 문제는 ui에서 2 개의 피커를 사용하면 창의 모든 공간을 차지하게되어 선택기의 크기를 조정할 수 없다는 것입니다.UI 선택기를 컨트롤러에 2 개의 다른 레이블 사용

필자는 각각의 피커에서 동일한 데이터를 사용하기 때문에 하나의 피커 컨트롤을 사용하여 벗어날 수 있어야합니다. 컨트롤의 초점이 제대로 수행되지 않으면 사용자에게 다소 혼란 스럽습니다.

나는 키보드가 텍스트 상자에 올라 오는 것처럼 작동하기를 바랍니다.

그래서 나는 간단한 UI를 가지고

가져 오기 데이터 1 : Textbox1의 가져 오기 데이터 2 : TextBox2를

사용자가 내부를 클릭

가 선택기를 TextBox1에 피커 대신 대신 키보드의 표시

및 선택기에서 선택된 데이터로 텍스트 상자를 채 웁니다. textbox2에서도 마찬가지입니다.

누군가가이 방법을 어떻게 달성했는지 또는 더 좋은 방법으로 접근 할 수있는 샘플을 제공 할 수 있습니까? 당신은 어떻게 동일한 창에 2 개의 드롭 다운 메뉴가 있어야하는 것을 처리합니까?

답변

3

텍스트가 너무 길지 않으면 두 구성 요소와 두 개의 레이블 (또는 텍스트 필드)이있는 선택기가 좋은 해결책입니다. 편집

여기 난 그냥 함께 휘핑 두 가지 구성 요소와 피커의

추가 할 수 있습니다.

UIPickerView with two components

은 또한 다음은 어떻게하는지 보여주는 몇 가지 코드입니다

을 추가 편집 :

이 설정 구성 요소

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return 2; 
} 

설정은 행

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if (component == 0) { 
     return [array1 count]; 
    } else { 
     return [array2 count]; 
    } 
} 

피커

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    if (component == 0) { 
     label1.text = [array1 objectAtIndex:row]; 
    } else { 
     label2.text = [array2 objectAtIndex:row]; 
    } 
} 
+0

당신은 하나의 선택기에서 2 개 개의 다른 구성 요소를 가질 수의 변화에 ​​따라 행

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == 0) { return [array1 objectAtIndex:row]; } else { return [array2 objectAtIndex:row]; } } 

변경 레이블에 대한 데이터를 제공? 사이드 A와 사이드 B가 레이블 2를 채우는 샘플을 보여줄 수 있습니까? –

+0

@ Matt- 저에게 그 근원을 보여줄 수 있습니까? 나는 네가 그 일을 할 수 있다는 것을 알지 못했다. 또한 2의 중간에 제 3의 바퀴를 추가 할 수 있습니다. 그것은 단지 "-"이며 바퀴가 움직이지 않아 선택 선이 바나나 - 원숭이를 읽게됩니다. 이것도 보여 줘서 고마워요 –

+0

@ 닉 게시 됨 일부 코드.중간 하이픈을 추가하려면 (a)'numberOfComponentsInPickerView'에 3을 반환해야합니다. (b)'numberOfComponentsInPickerView'를 수정하여 구성 요소 0에 대해 array1의 값을 반환하고, 구성 요소 1에 대해 '@'- "'및'titleForRow'에서 구성 요소 2에 대해 array2의 값을 반환합니다. (c)'didSelectRow'를 수정하여'component == 0'과'component == 2' 값에 따라 라벨을 변경합니다; (d) 구성 요소 (아마 150, 20, 150 정도)의 크기를 정하기 위해'UIPickerViewDelegate' 메소드'pickerView : widthForComponent :'메소드를 구현하는 것. –

관련 문제