我有一个UIPickerView,它正在显示,但它只是显示(null)。为什么是这样?我认为它符合我所需要的代表。
编辑:更详细。
基本上,我的应用是飞行日志。您可以制作保存的飞机,并且可以在进行新会话时选择它。 planeNum键存储有多少个平面,并且关键Plane%liTailNumber具有该平面的尾号。
这是我的代码:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return (long)[[NSUserDefaults standardUserDefaults]integerForKey:@"planeNum"];
}
NSMutableArray *tailPickerOptions;
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSInteger num = [[NSUserDefaults standardUserDefaults]integerForKey:@"planeNum"];
while (num > 0){
--num;
tailPickerOptions = [[NSMutableArray alloc]init];
NSString *dTailNumber = [NSString stringWithFormat:@"%@", [[NSUserDefaults standardUserDefaults]objectForKey:[NSString stringWithFormat:@"Plane%liTailNumber", (long)num]]];
[tailPickerOptions addObject:dTailNumber];
NSLog(@"%@", tailPickerOptions);
}
return tailPickerOptions[row];
}
答案 0 :(得分:0)
为while的每个循环初始化一个新数组。您的代码也不能确保您实际初始化数组 - 如果num = 0,您将永远不会进入并声明该数组。应该有一个警告或编译器错误。在最好的情况下,因为你继续在循环中声明一个新数组,你将返回最多1个元素。
将数组声明移到while循环上方。