2011-02-17 12 views
2

私はこの非常に単純なコードを持っているか、少なくとも私はそれが簡単だと思います。なぜピッカーではなく黒いフレームが表示されますか?

// 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で一般的なView Basedテンプレートを実行しています。 loadViewが呼び出されるのを見ることができますが、私はUIPickerViewの代わりに黒のフレームを取得します。

私は間違っていますか?

/donnib

+4

uipickerviewをviewcontrollerのビューとして設定することをお勧めしません – Max

答えて

6

あなたはピッカーのデータソースメソッドを実装していますか?それ以外の場合は表示されません必要があります。ここでは、アップルのドキュメントへ

リンク:代わりにオーバーライド-loadViewhttp://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Reference/UIPickerViewDataSource_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIPickerViewDataSource

+0

それはそれでした。私はそれらを実装することなく描くことができると思った。それはテストのためだけだった。どうも – dbrasco

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

は、あなたが-viewDidLoadをオーバーライドする必要があります。ビューがロードされたら、ピッカーを作成し、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]; 
} 
2

あなたは現在のビューにUIPickerViewの代理人を設定するのを忘れてしまいました。追加:

...あなたの初期化の後に、あなたのビューの前に追加してください。もちろん、ヘッダーファイルをUIPickerViewデリゲートとして設定し、dataSourceメソッドを実装するようにしてください。