UIPickerView显示没有选项,即使我已设置它们

时间:2014-07-05 17:38:35

标签: ios objective-c uipickerview

我有一个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];
}

1 个答案:

答案 0 :(得分:0)

为while的每个循环初始化一个新数组。您的代码也不能确保您实际初始化数组 - 如果num = 0,您将永远不会进入并声明该数组。应该有一个警告或编译器错误。在最好的情况下,因为你继续在循环中声明一个新数组,你将返回最多1个元素。

将数组声明移到while循环上方。

相关问题