我有这个非常简单的代码,或者至少我认为这很简单。
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
CGRect rect = CGRectMake(0.0f, 20.0f, 320.0f, 216.0f);
UIPickerView *myPickerView = [[UIPickerView alloc] initWithFrame:rect];
self.view = myPickerView;
[myPickerView release];
}
我正在使用XCode运行一般的基于视图的模板。我可以看到loadView被调用,但我得到一个黑框而不是UIPickerView。
我做错了什么?
/ donnib
答案 0 :(得分:6)
您是否实施了选择器的数据源方法?你需要它,否则它不会显示。
答案 1 :(得分:2)
您忘记将UIPickerView的委托设置为当前视图。添加:
myPickerView.delegate = self;
...在初始化之后和您的观点之前。当然,请确保将头文件设置为UIPickerView委托并实现dataSource方法。
答案 2 :(得分:1)
试试这个:
UIView *contentView = [[UIView alloc] initWithFrame: [[UIScreen mainscreen] bounds]];
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame: CGRectZero];
CGSize pickerSize = [pickerView sizeThatFits: CGSizeZero];
pickerView.frame = [self pickerFrameWithSize: pickerSize];
[pickerView setShowsSelectionIndicator: YES];
[contentView addSubview: pickerView];
[pickerView release];
[self setView: contentView];
[contentView release];
答案 3 :(得分:0)
您应该覆盖-loadView
,而不是覆盖-viewDidLoad
。加载视图后,您将创建选择器并将其添加为视图控制器拥有的视图的子视图。
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect rect = CGRectMake(0.0f, 20.0f, 320.0f, 216.0f);
UIPickerView *myPickerView = [[UIPickerView alloc] initWithFrame:rect];
[self.view addSubview:myPickerView];
[myPickerView release];
}