나는 textField의 inputView를 가진 UIPickerView 디스플레이를 가지고있다. 나는 pickerView를 두 개의 열로 나눴다. 하나는 정수 50-500입니다. 다른 하나는 0.25,0.50,0.75입니다. 나는 그들로 하여금 전체 숫자를 선택하고 다른 컬럼과 함께 소수의 소수를 선택할 수 있기를 바랍니다. "전체"번호를 표시하는 방법을 알아낼 수 없습니다. 두 번째 열을 이동할 때 열 1을 이동하는 것으로 등록하고 전체 수를 변경합니다. 사용자가 전체 숫자, 숫자의 소수 부분, 완료된 숫자를 선택할 수있게하고 textField가 "100.25"형식 또는 숫자를 나타내는 숫자를 표시하도록합니다. 완성 된 버튼을 코딩했습니다 ... 그리고 전체 숫자는 단지 형식 즉 "100"으로 표시됩니다.둘 이상의 열이있는 UIpickerView로 TextField를 채우려면 어떻게해야합니까?
감사합니다.
업데이트 !!! 암호!!!!
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component{
if ([pickerView isEqual:weightPickerView]) {
weightField.text = [NSString stringWithFormat:@"%d.%d",[weightPickerArray objectAtIndex:row], [weightPickerArray2 objectAtIndex:row]];
-(void)populateWeightPickerArray{
weightPickerArray = [[NSMutableArray alloc] init];
for (int weight = 50; weight <=500; weight++) {
NSString *weightString = [NSString stringWithFormat:@"%d%",weight];
[weightPickerArray addObject:weightString];
}
}
-(void)populateWeightPickerArray2{
weightPickerArray2 = [[NSMutableArray alloc] init];
[weightPickerArray2 addObject:@"0.25"];
[weightPickerArray2 addObject:@"0.50"];
[weightPickerArray2 addObject:@"0.75"];
}
그래서 사용자가 무게를 선택하길 원합니다. 예를 들어, 100 열은 1, 2 열은 0.25입니다. 그런 다음 텍스트 필드에 100.25 ...
업데이트 2를 표시하고 싶습니다. 코드가 변경되었습니다. 이제 오류가 발생합니다.
[2012-08-03 10:39:39 -0500에 시작된 세션입니다.] 2012-08-03 10 : 39 : 45.656 CalorieAppFinal [1088 : 207] - NSCFNumber isEqualToString :] : 인스턴스 0x4b336c0에 전송 된 인식 할 수없는 선택자 2012-08-03 10 : 39 : 45.661 CalorieAppFinal [1088 : 207] * 캐치되지 않은 예외 'NSInvalidArgumentException'으로 인해 앱 종료 중, 이유 : '- [NSCFNumber isEqualToString : ] : 인식 할 수없는 선택이 먼저 던져 여기
에서 * 콜 스택 '인스턴스 0x4b336c0로 보내 내가 내 weightPicker를 초기화하는 방법입니다
첫 번째 대답으로 편집 0-(IBAction)weightFieldDidBeginEditing{
weightPickerView = [[UIPickerView alloc] init];
weightField.inputView = weightPickerView;
weightPickerView.showsSelectionIndicator = YES;
weightPickerView.delegate = self;
weightPickerView.dataSource = self;
[weightPickerView release];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if ([pickerView isEqual:weightPickerView]) {
int valOne = [[weightPickerArray objectAtIndex:row] intValue];
CGFloat valTwo = [[weightPickerArray2 objectAtIndex:row] floatValue];
weightField.text = [NSString stringWithFormat:@"%d.%.2f",valOne, valTwo];
}
-(void)populateWeightPickerArray{
weightPickerArray = [[NSMutableArray alloc] init];
for (int weight = 50; weight <=500; weight++) {
[weightPickerArray addObject:[NSNumber numberWithInt:weight]];
}
}
-(void)populateWeightPickerArray2{
weightPickerArray2 = [[NSMutableArray alloc] init];
[weightPickerArray2 addObject:[NSNumber numberWithFloat:0.25f]];
[weightPickerArray2 addObject:[NSNumber numberWithFloat:0.50f]];
[weightPickerArray2 addObject:[NSNumber numberWithFloat:0.75f]];
}
weightPickerView는 어떻게 초기화됩니까? – Rick
- (IBAction) weightFieldDidBeginEditing { \t weightPickerView = [[UIPickerView alloc] init]; \t weightField.inputView = weightPickerView; \t weightPickerView.showsSelectionIndicator = YES; \t weightPickerView.delegate = self; \t weightPickerView.dataSource = self; \t [weightPickerView release]; } @Rick – user1450221
- (IBAction) weightFieldDidBeginEditing에서 weightPickerView를 릴리스 한 다음 나중에 "if ([pickerView isEqual : weightPickerView])"에 액세스하려고 시도한 것 같습니다. weightPickerView를 사용하여 완료 한 후에 만 (뷰에서 피커 뷰를 제거한 후) release하십시오. – Rick