2012-06-19 173 views
5

我一直在學習有關iOS編程的委託和數據源,需要問一下,製作數據源協議時需要做什麼而不是委託協議?委託和數據源iOS

另外我怎樣才能實現一個委託中的許多相同的對象代表?示例一個具有許多獨特定製警報的對象。

- 編輯 -

用於第二部分的一個例子:

,其具有每四個不同的警報用不同的按鈕

一個目的。由於對象需要通過成爲警報委託來指定每個按鈕的工作方式。我將如何設置委託方法來確定每個警報?

回答

14

這兩種類型的物體或多或少都有相同的表現方式,這是他們做的事情的問題。

委託類型對象響應另一個對象所採取的操作。例如,UITableViewDelegate協議具有用於在用戶選擇表格中的特定行時執行動作的方法,例如didSelectRowAtIndexPath

數據源類型對象將數據提供給另一個對象。再次例如,UITableViewDataSource協議具有諸如cellForRowAtIndexPathnumberOfRowsInSection的方法來指示應該在表格中顯示什麼。

這兩者在編譯方面並沒有很大的區別,它只是一種編碼風格,使得對象對代碼的用戶做的事情非常清楚。

編輯:

要回答你的第二個問題:如果你希望每個警報不同的反應,你需要編寫每個警報不同的委託。例如,如果您的某個警報是保存確認警報(也許您將覆蓋文件,並且彈出以確認用戶想要執行的操作),則您將擁有如下對象:

@interface SaveConfirmAlertDelegate : NSObject<UIAlertViewDelegate> 
@end 

而在@implementationSaveConfirmAlertDelegate中,您將實現正確的保存功能,具體取決於用戶在警報中按下哪個按鈕。

當您創建一個警報視圖時,您可以指定委託對象應該是什麼,這不一定是self。您可以將您的四位代表存儲爲不同的對象,並根據需要將它們設置爲警報。

我希望這可以清理東西

+0

感謝您解釋我的第一個問題。我爲我的問題添加了一個例子。 – RMDan

+0

@RMDan我爲你的第二個問題添加了一個額外的解釋,我希望能夠清楚一點 –

+0

這非常有道理。我將不得不更多地瞭解代表團,但它開始有意義。 – RMDan

相關問題