2010-05-10 13 views
0

我正在寫一個iphone應用程序,在許多情況下,一個子視圖需要與其超級視圖交談。例如:指定一個視圖控制器是不直接派生的子視圖的委託?

  • 觀有一個包含 照片
  • A有一個子視圖B,其允許用戶 添加照片,在這我想 自動把它們添加到A的表視圖表視圖

到目前爲止,我一直在B中創建一個@protocol,並將A註冊爲委託。

在我的情況的問題是,B有一個子視圖ç,允許用戶添加的內容,我想用C來調用其祖父的變化,A

目前我解決此通過傳遞工作的行動圍繞一個指向我的基本視圖控制器的自指針(C.delegate = B.delegate),但它對我來說似乎不太合適。有什麼想法嗎? (和/或關於代碼組織的一般建議,當各種子視圖需要與高級視圖交談時將不勝感激)

謝謝!

回答

1

我通常有一個視圖控制器是它控制的視圖層次結構中所有視圖的委託。在表視圖的情況下,委託創建單元格,並將其自身設置爲單元層次結構中任何視圖的委託。

基本上,創建的任何視圖都應該經過或由委託創建,在這種情況下,委託可以將自己或其他委託分配給層次結構中的每個視圖。

這就是說在作爲兩個表視圖的委託的情況下有一點點分解,因爲檢查tableView參數是最好的。但是,主代表可以創建單獨的控制器實例,以填充委託人的角色以實現單個視圖。

總體設計目標是視圖知道如何呈現數據並與用戶交互,但不知道如何處理數據或交互。爲此,他們需要代表。讓其他觀點的代表意見打破了設計目標。

1

也許看看創建一個管理所有照片的singleton。所有視圖控制器(A,B,C等)都訪問單例以檢索,顯示,修改和附加照片。

相關問題