2011-04-27 2 views

답변

2

아래의 방법을 사용하여 직접 두 개의 라벨을 만들어야합니다. 이는 pickerView가로드 될 때 또는 reloadcomponent 명령을 가져올 때 자동으로 호출되는 pickerView의 델리게이트 메소드입니다. 여기

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)theView{ 

    UIView *pickerviewtemp=[[UIView alloc] initWithFrame:CGRectZero]; 

    UILabel *lbl=[[[UILabel alloc] initWithFrame:yourrequiredframe]autorelease]; 
    [lbl setBackgroundColor:[UIColor clearColor]]; 
    [lbl setText:*set text according to yourself*]; 
    [lbl setFont:[UIFont boldSystemFontOfSize:16]]; 
    [pickerviewtemp addSubview:lbl]; 

    UILabel *lb2=[[[UILabel alloc] initWithFrame:yourrequiredframe]autorelease]; 
    [lbl2 setBackgroundColor:[UIColor clearColor]]; 
    [lbl2 setText:*set text according to yourself*]; 
    [lbl2 setFont:[UIFont boldSystemFontOfSize:16]]; 
    [pickerviewtemp addSubview:lbl2]; 


    return pickerviewtemp; 
} 
+3

이렇게하면 모든 행에 레이블이 만들어지며 선택한 행에는 레이블이 생성되지 않습니다. [더 나은 방법] (http://stackoverflow.com/questions/367471/fixed-labels-in-the-selection-bar-of-a-uipickerview)을 참조하십시오. – BryanH

+1

@ Gypsa- 대답은 하나의 선택된 표시기가 아닌 모든 행에 대해 uilabel을 만듭니다. –

0

UIPickerView이기 때문에 당신은, 당신은 단지 몇 가지 레이블을 추가하고 필요, 당신은 단순히를 통해 UIPickerViewUILabel에 추가 할 수 있다면 귀하의 경우에는 사용자 정의 UIPickerView

을해야 할 것UIView ... 빠르고 더러운 ...

3

, 나는 (내가 당신의 요구 사항에 따라 하나의 component 변화를 위해 그것을했던 한)을 살펴이 질문에 대한 적절한 대답을 얻었다 : 당신이 방법을 구현해야합니다

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 
    //set your View. Here is an example .. 
UIView *pickerviewtemp=[[UIView alloc] initWithFrame:CGRectZero]; 

    UILabel *lbl=[[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 50)]autorelease]; 
    [lbl setBackgroundColor:[UIColor clearColor]]; 
    [lbl setText:[array_from objectAtIndex:row]]; 
    [lbl setFont:[UIFont boldSystemFontOfSize:16]]; 
    [pickerviewtemp addSubview:lbl]; 


    return pickerviewtemp; 

} 

을 나는 그것을 테스트 한 lastSelectedIndex

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    UILabel *label = (UILabel*)[pickerView viewWithTag:999+(component*lastSelectedIndex)]; // you can set your own tag... 
    [label removeFromSuperview]; 
    UIView *view = [pickerView viewForRow:row forComponent:component]; 
    UILabel *lbl2=[[[UILabel alloc] initWithFrame:CGRectMake(110, 0, 50, 50)]autorelease]; 
    lbl2.tag = 999+(component*row); 
    [lbl2 setBackgroundColor:[UIColor clearColor]]; 
    [lbl2 setText:@yourtext"]; 
    [lbl2 setFont:[UIFont boldSystemFontOfSize:16]]; 
    [view addSubview:lbl2]; 
    lastSelectedIndex = row; 
} 

이름 .h 파일에 int 변수를 가져 가라. 희망 : 그것은 당신을 도울 것입니다 .... :)

+0

@Vivek Sehrawat : - 안녕하세요,보세요, 당신 솔루션입니다. :) –

관련 문제