1

我的故事板中有一個UIPickerView。含 所述的UIViewController它已經接口聲明設置UIPickerView pickerView:titleForRow:未調用rowforComponent方法

@interface ContactDetail : UIViewController <ABPeoplePickerNavigationControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate,UIAlertViewDelegate, UITextFieldDelegate> 

上視圖負荷,pickerview委託設定

pickerView_RelationshipType.dataSource=self; 
pickerView_RelationshipType.delegate = self; 
pickerView_RelationshipType.showsSelectionIndicator = YES; 

所有UIPickerView數據源和委託方法被觸發除了那些2

pickerView:titleForRow:rowforComponent 
and 
pickerView:viewForRow:forComponent:reusingView 

那些以下被叫,沒問題

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
    - (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component 
    - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component 
+0

向iBhavin和JAL致謝。 我已經意識到我的dataSource從coreData返回零。問題解決 – Add080bbA 2014-11-06 12:04:24

+0

如果我的答案幫助你,請將其標記爲已接受。 – JAL 2014-11-06 14:35:54

回答

4

什麼是numberOfComponentsInPickerView

如果您的numberOfRows返回0,那麼您的委託方法將永遠不會被調用 - 如果選擇器不認爲它具有任何要顯示的行,則它不會詢問行的標題。

2

確保您的數據源數組已分配並初始化。我遇到了這個問題,當一切都正確連接(我設置數據源和委託,並符合協議),但我忘記初始化我的數據源數組之前添加對象。我的代碼打numberOfComponentsInPickerViewnumberOfRowsInComponent但不titleForRow,我不明白爲什麼。確保你的數據源不返回零。

一種愚蠢的邊緣案例,但我想我會添加我的答案,以防其他人遇到同樣的問題。