0

我有一个 UIPickerView,我希望它有 2 列填充我的数组中的项目,但我不知道如何,有我的数组:

-(void)fillingStandartWeightArray{

    if (!standartWeightArray){
        for (int i=25; i<150 ;i++){
            NSString *weightString;
            weightString = [NSString stringWithFormat:@"%d kg", i];
            [standartWeightArray addObject:weightString];
            NSLog(@"%@", weightString);
        }
    }

}

-(void)fillingStandartHeightArray{

    if (!standartHeightArray){
        for (int i=85; i<250; i++){
            NSString *heightString;
            heightString = [NSString stringWithFormat:@"%d cm", i];
            [standartHeightArray addObject:heightString];
            NSLog(@"%@", heightString);
        }
    }

}

更具体地说,我不知道如何“告诉” UIPickerView 用一个数组填充其中一个轮子,而另一个用另一个数组填充轮子。我试过这个:

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{


    if (component == 0){
        return [standartWeightArray count];
    }   else {
        return [standartHeightArray count];
    }
}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

    return 2;
}

-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    if (component == 0)
        return [standartWeightArray objectAtIndex:row];
    else if (component == 1)
        return [standartHeightArray objectAtIndex:row];
}

我确实在 viewDidLoad 部分调用了函数:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self fillingStandartWeightArray];
    [self fillingStandartHeightArray];
    NSLog(@"%@", standartWeightArray);

}

但这行不通。

4

2 回答 2

1

当然看起来你对我来说一切都是正确的。

但请确保将 UIPickerView 委托和数据源设置为 PickerView 数据源方法所在的相同对象/类(ViewController?)。

您可以在 Xcode 的 Interface Builder 中设置它,也可以在“ viewDidLoad:”时间以编程方式设置(如果您将选择器视图设置为 IBOutlet)。

于 2013-04-03T22:18:51.303 回答
1

您的数据源/委托方法非常完美。

注意以下事项

1)正确分配standartHeightArraystandartWeightArray 对象。如果您还没有这样做,请按如下方式分配数组对象。

-(void)fillingStandartWeightArray{

    if (!standartWeightArray){
   // Allocate the array
       standartWeightArray = [NSMutableArray new];
        for (int i=25; i<150 ;i++){
            NSString *weightString;
            weightString = [NSString stringWithFormat:@"%d kg", i];
            [standartWeightArray addObject:weightString];
            NSLog(@"%@", weightString);
        }
    }

}

-(void)fillingStandartHeightArray{

    if (!standartHeightArray){
   // Allocate the array
        standartHeightArray = [NSMutableArray new];
        for (int i=85; i<250; i++){
            NSString *heightString;
            heightString = [NSString stringWithFormat:@"%d cm", i];
            [standartHeightArray addObject:heightString];
            NSLog(@"%@", heightString);
        }
    }

}

2)delegate/datasource正确连接picker的属性。您可以在界面生成器或代码中执行此操作(在viewDidLoad

于 2013-04-03T22:49:27.697 回答