2011-02-17 22 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運行一個基於普通視圖的模板。我可以看到loadView被調用,但是我得到一個黑框而不是UIPickerView。

我在做什麼錯了?

/donnib

+4

不是將uipickerview設置爲視圖控制器視圖的最好方法 – Max

回答

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

取而代之的首要-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]; 
} 
2

您忘記了將UIPickerView的委託設置爲當前視圖。添加:

myPickerView.delegate = self; 

...在您的初始化之後,在您的視圖之前。當然,確保您將頭文件設置爲UIPickerView委託並實現dataSource方法。

相關問題