1.問題描述:我在一個tab的DashboardController頁面上增加了一個包含兩個頁面大小的UIScrollView實現左右滑動分頁效果,
然後在UIScrollView的左右兩頁都分辨包涵了一個自定義的繼承UIViewController的子頁面ChildViewController,
在ChildViewController頁面裏,我分別畫了四個圖,餅狀圖柱狀圖啥的,它們都需要做點擊事件處理,就需要用到委託。
其實用到委託的方式也十分簡單,將我的圖表view的delegate設置成一個繼承自ChartViewDelegate的對象,
在func chartValueSelected裏面做各種處理就可以了。
原諒我按web的思路來做分析,
我的層次結構由下到上,由底層到高層就是 DashboardController的view-UIScrollView-ChildViewController的view-圖表view
現在的問題是,
我將ChildViewController繼承ChartViewDelegate作爲委託,跟蹤代碼發現ChartViewDelegate內部實現的delegate爲nil,導致事件無法觸發。
2.解決過程:
a.將ChildViewController中代碼放入單獨頁面,可以觸發。排除本身代碼問題干擾。
b.將ChildViewController中代碼放入單獨tab中,可以觸發。排除tab干擾。
c.將ChildViewController中代碼放入單獨UIScrollView中,可以觸發。排除UIScrollView干擾。
走到這裏大概就猜想,應該是層次太多,委託的層次出了問題。
3.解決思路:將委託放入由上層的ChildViewController一層一層下移,放入到底層的DashboardController時,測試事件觸發成功。
4.結論:雖然我不知道具體原理,但是走到這裏我的想法大概是,即使是最頂層的事件委託,也要在最底層實現和捕捉。後續有了新的進展和學習成果,再來補充。我先去搬磚啦,麼麼噠!