2011-06-24 26 views
0

具體問題回到控制器是:如何將值從可重複使用的視圖基於我實現

問:

  • 都具有內它的一些看法一個UIViewController(在配置一個XIB文件)
  • 當在屏幕上的某個控件出現在這裏(即在其中一個視圖中)時,如何在同一時間更新UIViewController參數?

背景:

  • 在我來說,我有一個colorPickerController,並在此有一些子視圖,用戶與交互選擇顏色
  • 當用戶拖動鼠標一個的子視圖,其中一個其他更新的顏色
  • 我不知道如何也保持主要colorPickerController參數更新與最新的顏色被選中
  • 因此問題如何更新/訪問控制器內的一個控制器的參數內控制器

回答

1

用戶拖動鼠標(或手指?)的子視圖可以被視爲某種控件,因此您只需在該情況下使用目標/操作。或者可以是代表團。這樣你可以保持這個子視圖和視圖控制器鬆耦合,這也可以讓你在其他地方重用同一個類(子視圖是實例的)。因此,在授權的情況下:

  1. 定義一個協議:

    @protocol ColorPickerViewDelegate

    • (無效)colorPickerView:(ColorPickerView *)cpView didUpdateWithColor:(的UIColor *)newColor; @end
  2. 添加屬性@property(nonatomic, assign) id<ColorPickerViewDelegate> didUpdateDelegate;上色採摘UIView子類。

  3. 使您的viewcontroller採用上述協議,並在viewcontroller的實現部分定義該協議的方法。

  4. 創建顏色選擇子視圖時,將您的viewcontroller設置爲該子視圖的didUpdateDelegate。

  5. 進行調用,以便在適當的時候在你的顏色採摘視圖觸摸操作邏輯didUpdateDelegate:[didUpdateDelegate colorPickerView:self didUpdateWithColor:someNewColor];

希望這是你想要的

+0

感謝。因此,代表們避免了你必須理解層次,並且提供了一種方法來將代碼的一部分發送到另一部分的消息呢?所以你認爲這比控制器更好地通過引用將參數傳遞給子視圖(子視圖更新,然後控制器會看到),儘管我猜控制器在這種情況下仍然不知道它何時更改 – Greg

+0

對不起,你在談什麼層次? – Russian

0

我猜在iOS控制庫中沒有任何ColorPickerController?它是自定義控制器嗎?請具體說明,以便相應回答。

相關問題