我有一个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);
}
但那不起作用。
答案 0 :(得分:1)
当然看起来你正确地设置了一切。
但是请确保将UIPickerView委托和数据源设置为PickerView数据源方法所在的同一对象/类(ViewController?)。
您可以在Xcode的Interface Builder中设置此项,也可以在“viewDidLoad:
”时间以编程方式设置(如果您将选择器视图设置为IBOutlet)。
答案 1 :(得分:1)
您的数据源/委托方法非常完美。
照顾以下事项
1)正确分配standartHeightArray
和standartWeightArray
个对象。如果您还没有这样做,请按如下方式分配数组对象。
-(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
属性。您可以在界面构建器或代码(viewDidLoad
)