0

我有一个 UIPickerView 具有以下委托方法实现:

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return 2;
}


- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

    if(!view)
    {
        view = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 37)] autorelease];
        UILabel *label = (UILabel*)view;
        label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        label.textAlignment = UITextAlignmentCenter;
        label.font = [UIFont boldSystemFontOfSize:24];
        label.backgroundColor = [UIColor whiteColor];
        view.userInteractionEnabled = NO;
    }

    ((UILabel*)view).text = @"X";
    return view;

这段代码在 iOS 5 中运行良好。也就是说,我得到了一个 UIPickerView,它有 2 行,上面有一个 X。然而,在 iOS4 下,即使调用了 3 个方法,当我显示 UIPickerView 时,内部也是空白的,就好像没有行存在一样。

有任何想法吗?

4

2 回答 2

1

嗯,两个想法。首先,您创建的视图没有宽度 - 它设置为 0。我想您需要给它一些宽度,不是吗?

其次,该委托方法的描述表明传入的视图被隐藏和缓存。这会让我相信你可能想要“view.hidden = NO;”。

我敢打赌其中一个或两个都是问题,但是 YMMI :-)

于 2012-08-08T00:31:54.847 回答
1

谢谢,我有同样的问题。只是改变我已经解决的框架大小。

于 2012-10-04T19:25:44.613 回答