UIPickerView不显示iOS4中组件的自定义视图(在iOS5中显示)

时间:2012-08-08 00:19:51

标签: ios cocoa-touch uipickerview

我有一个带有以下委托方法实现的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中运行得很好。也就是说,我得到一个带有2行的UIPickerView,上面有一个X.但是,在iOS4下,即使调用了3个方法,当我显示UIPickerView时,内部显示为空白,就像没有行一样。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

谢谢,我有同样的问题。 只是改变了框架尺寸我已经解决了它。