2012-08-15 48 views
3

我有4類(視圖):
A,B,C和d如何實現在目標C的多級代表

類A呼叫B,B調用C,和C通話d:
A> B> C> d

在課堂DI已實施了委託協議,我要趕在A級委託事件

我怎樣才能做到這一點?

回答

10

有多種方式可以實現這一目標。你的情況最好取決於情況。這裏有一些想法:

  1. 你可以在所有這些類中實現委託協議,並簡單地將它傳遞給下一行。
  2. 您可以添加伊娃從A訪問d類並將其直接傳遞(的spaghetti code危險!)
  3. 如果有可能,你可以改變你實現,讓你只實現A中的委託和處理是正確的有。
  4. 最後的手段可能會使用NSNotifications(不要與山獅的NSUserNotifications混淆)。在您的班級A中,您可以向默認通知中心發送通知,並在D班中註冊此通知並根據需要進行處理。只有使用這種方法,儘管如果沒有其他的工作,因爲這可能會導致更糟糕的代碼。
+1

+1顯示多種方法並解釋爲什麼有些更好。 – Dustin 2012-08-15 12:33:04

0

將ClassD成員委託分配爲ClassA對象。

讓我解釋一下

如果在D類一個UITableView並希望引發ClassA的的D類的tableView代表,讓指定的tableView委託作爲ClassA的對象和實施ClassA的所有UITableView的代表。

如:ClassD_tableView.delegate = classAObj;

注:實現一類D類的tableView委託方法和不要從裏面D類的ClassA創建一個新的對象。您可以通過傳遞參數或使用UIResponder來獲取ClassD中的父類A。