开发者

Why am i getting a black frame and not the picker?

I have this very simple code or at least i think it's simple.

// 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];
}

I am running a general View Based template with XCode. 开发者_如何学编程I can see the loadView getting called but i get an black frame instead of the UIPickerView.

What am i doing wrong ?

/donnib


Have you implemented the picker's datasource methods? You need it otherwise it won't show.

Link to Apple Documentation here: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Reference/UIPickerViewDataSource_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIPickerViewDataSource


You've forgotten to set the UIPickerView's delegate to your current view. Add:

myPickerView.delegate = self;

...following your initialization and before your view. And of course, make sure you set up your header file as a UIPickerView delegate and implement the dataSource methods.


Try this:

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];  


Instead of overriding -loadView, you should override -viewDidLoad. Once the view has loaded you'll create the picker and add it as a subview of the view owned by the view controller.

- (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];
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜