用一个数组填充多个UIPickerview?

时间:2012-06-29 12:49:53

标签: arrays uipickerview

我在一个视图中有4个UIpickerviews。我想用一个数组填充所有这些。此时,当视图出现时,它会显示一个包含数据的选择器视图,但其他视图为空。当我开始滚动第二个时,它开始填充但第一个开始变空。我正在使用填充UIPickerVIew的常用方法。

1 个答案:

答案 0 :(得分:0)

作为问题答案的开头,您必须为UIPickerViewDataSource实现委托例程。

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

您的代码中可能已经有上述例程!!!

接下来,您必须实施以下内容:

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    switch(component){
        case 0:
            // return X based upon how many for the left-most column
        case 1:
            // return X based upon how many for the second left-most column
        case 2:
            // return X based upon how many for the third left-most column
        default:  // Serves as 4
            // return X based upon how many for the right-most column        
    }
}

或者在上面的例程中它可以简单地(如果你的数据填充每列的n,因此你的数组大小应该是n * 4)

[myArray count];  //  Where myArray is replaced with you array variable name

最后实施:

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

    // Assuming your array is filled with strings only
    int index = [myArray count] / 4 * component + row;
    return [myArray objectAtIndex:index];
}

这假设您的数组看起来像

[1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4]

其中数字表示数据所属的列,而不是数据本身