[英]How to send callback message from nested custom view to controller elegantly?
例如:
有一個帶有redCustomView
的controller
,其中一個greenCustomView
,一個帶有button
的buleCustomView
。
題:
單擊button
時如何向controller
發送回叫消息?
我的解決方案:
blcok to block
按視圖發送回調消息; delegate to delegate
按視圖delegate to delegate
發送回調消息; notification
將回調消息從view
直接發送到controller
。 問題:
使用block
或delegate
顯得如此龐大;
使用notification
? 每個人都可以收到此通知消息,所以我認為這不是更好的方法。
奇跡:
還有其他更好的方法來優雅地解決此問題嗎?
我要做的就是沿着響應者鏈走,直到我來到視圖控制器為止。 在您的用例中,這很簡單-單擊按鈕-因為您要做的就是為按鈕賦予nil-targeted動作 ,運行時將在視圖控制器中為您找到處理程序實現。
要找到優雅的解決方案,只需看一下蘋果自己的觀點即可。 例如,UITableView具有必須采用UITableViewDelegate協議的委托。 通過視圖(例如tableview:didSelectRowAtIndexPath :)向委托通知用戶交互。 因此,在這種情況下,“優雅的解決方案”是協議/代理。 但是,如果要在viewDidLoad中構建視圖層次結構,而不是構建一個真正的自定義視圖(例如UIControl的子類),那么target-action方法是一種常見的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.