2011-06-20 53 views
0

所以我的UIPickerView沒有連接到數據源。我不知道爲什麼。UIPickerView沒有連接到數據源

我使用UIPickerViewDelegateUIPickerViewDataSource創建了一個文件,並正確地執行了在觸摸textField時引入UIPickerView的過程。

pickerView的工作原理,但不顯示任何組件。我實施了

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
return 3; 
} 

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 



- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 


- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 


- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ 

任何想法爲什麼pickerView沒有連接到DataSource?我也試過所有這些方法的NSLogging。 // Does not print

我還設置

packSizePopPickerView.delegate = self; 
packSizePopPickerView.dataSource = self; 
packSizePopPickerView = [[UIPickerView alloc] init]; 
+0

你設置'delegate'和''你的UIPickerView'性能dataSource'? – albertamg

+0

你設置委託和數據源的方法是什麼?在IB或代碼中創建選擇器視圖?並且不要創建新帖子 - 如果您需要添加更多信息,請修改帖子。 – thomashw

+0

我在cellForRowAtIndexPath中設置它,因爲我需要它出現在UITableViewCell中的textField ....事情是..我有另一個視圖,它實現了SAME pickerView,它工作。爲什麼這不起作用! ? :( – Legolas

回答

1

在cellForRowAtIndexPath中,您將設置packSizePopPickerView的dataSource/delegate,然後將packSizePopPickerView分配/初始化爲新的UIPickerView。 NEW UIPickerView不再具有其設置的委託/數據源。

這是錯誤的:

packSizePopPickerView.delegate = self; 
packSizePopPickerView.dataSource = self; 
packSizePopPickerView = [[UIPickerView alloc] init]; 

試試這個:

packSizePopPickerView = [[UIPickerView alloc] init]; 
packSizePopPickerView.delegate = self; 
packSizePopPickerView.dataSource = self; 
+0

我剛試過,仍然沒有顯示3個組件,而且我不認爲你的回答是正確的,因爲它不在你指定的位置 – Legolas

+0

你還沒有回答我的問題 - 你是在IB還是在代碼中設置這個pickerview?嘗試通過cellForRowAtIndexPath中的[myPickerView reloadAllComponents]來重新加載你的pickerview,並且看看你的代理/數據源方法是否被調用。 – thomashw

+0

@Thomashw:我做它的代碼。沒有使用InterfaceBuilder,我嘗試重新加載*仍然沒有進展* – Legolas

0

你需要明確地告訴撿拾工具什麼的數據源和代表們。

myPicker.delegate = someController; myPicker.datasource = someController;

+0

是的,我已經這樣做了,檢查更新的問題 – Legolas