2010-06-20 27 views
2

撕裂了我的頭髮試圖讓最簡單的教程來運行,從書「深入淺出iPhone開發」UIPickerView機的應用程式時,有線可達數據源/委託

具有綁定到一個數組一個UIPickerView的物體。就這些。它沒有做任何事情,我希望它做的(現在)是顯示數組中的內容。我一直按照這本書中的步驟,並重新啓動至少5次。在我最近的嘗試中,我發現瞭如何調試和添加一些斷點。

這是儘可能的應用得到

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

如果我更改了該行返回0;該應用程序加載一個空的UIPickerView。如果它是一個,那麼應用程序在運行時會爆炸。

我已驗證數組存在並有數據 - pickerview設置爲0組件我可以將任何行從數組返回到標籤。只有當我通過IB將pickerview連接到數據源/代理時,它纔會被彈出。

真的在我的繫繩結束時,一直試圖讓它工作幾個星期,然後準備把Macbook從窗戶中拿出來,用弩追捕史蒂夫喬布斯。我感到特別愚蠢的是,這是本書的第一個例子。任何幫助將非常感激。

UPDATE:

這裏我只是試着插入在 'pickerViewnumberOfRowsInComponent' 的空間代碼

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


- (NSInteger)pickerView:(UIPickerView *) pickerViewnumberOfRowsInComponent : 
    (NSInteger)component { 
    return [activities count]; 
} 


- (NSString *)pickerView:(UIPickerView *) titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 
    return [activities objectAtIndex:row]; 
} 

,雖然有書中沒有空間。放入一個空格(例如pickerView numberOfRowsInComponent)使得UIPickerView可以工作,但它充滿了問號而不是數組內容。看起來這本書有一個錯字。

+0

請向我們展示您的'pickerView:titleForRow:forComponent:'或'pickerView:viewForRow:forComponent:reusingView:'方法(您實現的兩者中的任何一個)的代碼。 – 2010-06-20 18:32:18

回答

1

只是爲了澄清每個人基於您的原始代碼...

你的委託方法缺少空間:

- (NSInteger)pickerView:(UIPickerView *) pickerViewnumberOfRowsInComponent: ... 

應該是:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: ... 

還有你的另一委託方法忽略了參數名稱pickerView:

- (NSString *)pickerView:(UIPickerView *) titleForRow: ... 

應該是:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow: ... 
0

你想補充一點:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [activities objectAtIndex: row]; 
} 
+0

謝謝,那已經在那裏 - 看代碼更新後的帖子。 – roryok 2010-06-20 20:01:37

0

您需要

(NSInteger的)pickerView pickerViewnumberOfRowsInComponent之間的空間:(UIPickerView *)pickerViewnumberOfRowsInComponent:(NSInteger的)組件

不幸這是本書中的一個錯字,但是這個(連同其他錯誤)在Head First iPhone Development勘誤頁面(http://oreilly.com/catalog/errata.csp?isbn=9780596803544)中被捕獲。對不起,頭疼,希望你喜歡這本書。 - 丹

+0

謝謝丹,我把它分類。空間問題是主要的罪魁禍首,問號是一個簡單的解決辦法。我現在實際上不記得是什麼問題,但沒有花很長時間來理清。謝謝! – roryok 2010-06-22 11:22:48

-1

剛看到你的更新 - 很高興你發現空間問題。至於問號,這(顯然)不應該發生。你可以發佈你設置活動數組的地方嗎? - 丹