2009-10-11 7 views
0

이 같은 데이터를 표시하기 위해이 방법을 사용하고 builder.i 인터페이스로부터 pickerview 추가 한 .... 여기 피커 뷰는 피커 뷰의 숫자를 표시하지만 라벨에 제대로 표시되지 않습니까?

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
if (pickerView == SpotPickerView) // don't show selection for the custom picker 
{ 
    // report the selection to the UI label 
label.text = [NSString stringWithFormat:@"%d - %@ - %d",[pickerView selectedRowInComponent:0], 
    [RowArray objectAtIndex:[pickerView selectedRowInComponent:1]], 
    [pickerView selectedRowInComponent:2]]; 
} 
} 


- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
NSString *returnStr = @""; 
if (pickerView == SpotPickerView) 
{ 
    if (component == 0) 
    { 
    returnStr = [[NSNumber numberWithInt:row+1] stringValue]; 
    } 
    else if(component==1) 
    { 
    returnStr = [RowArray objectAtIndex:row]; 
    } 
else 
{ 
    returnStr =[[NSNumber numberWithInt:row+1] stringValue]; 
    } 
} 

    return returnStr; 
} 

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component 
{ 
    CGFloat componentWidth = 0.0; 

    if (component == 0) 
    componentWidth = 90.0; 
    else if (component == 1) 
    componentWidth = 100.0; 
    else 
    componentWidth = 90.0; 

    return componentWidth; 
} 

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component 
{ 
    return 40.0; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    int count; 
    if (component == 0) 
    count = 15; 
    else if (component == 1) 
    count=[RowArray count]; 
else 
    count = 100; 

return count; 
} 

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

가 RowArray

- (void)viewDidLoad { 
RowArray = [[NSArray arrayWithObjects: 
    @"A", @"B", @"C", 
    @"D", @"E", @"F", @"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T", 
    @"U",@"V",@"W",@"X",@"Y",@"Z", 
    nil] retain]; 
} 

이지만 첫 번째 행을 선택하는이 도시 .

alt text http://i37.tinypic.com/66hphd.png

난 그래서 1 0 대신 필요 데이터베이스의 값을 저장할 필요가있다.

또한 버튼을 클릭하면 자동으로 각 열의 0 번째 인덱스로 이동합니다 내 picker view.means를 어떻게 재설정합니까?

답변

1
label.text = [NSString stringWithFormat:@"%d - %@ - %d",[pickerView selectedRowInComponent:0], 
    [RowArray objectAtIndex:[pickerView selectedRowInComponent:1]], 
    [pickerView selectedRowInComponent:2]]; 

이 코드는 구성 요소의 선택된 행의 행 번호를 입수한다. 배열은 인덱스가 0이고 pickerview (아마)는 배열을 사용하여 행을 관리합니다. 따라서 첫 번째 행은 0, 두 번째 행은 세 번째 행, 세 번째 행은 두 번째 행이됩니다. 이것은 쉽게 수행하여 해결됩니다 : 당신은 그냥 할 각 열에서 0 번째 인덱스를 선택합니다

[pickerView selectedRowInComponent:0] + 1

는 프로그래밍 방식 selectRow:inComponent:animated를 사용하여 특정 행을 선택할 수 있습니다 : 모든 구성 요소에 대한 [pickerView selectRow:0 inComponent:0 animated:YES].

관련 문제