Re: [問題] 如何寫像TableViewDatasource的delegate?

看板MacDev作者 (Ben(憋))時間8年前 (2017/06/22 15:27), 8年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《iphone7pro (i7pro)》之銘言: : 最近在寫類似UITableViewDataSource numberOfRowsInSection : 當我的元件在init的時候會去執行delegate : 我在viewController實在這個delegate的時候 : 會發現我return 的時候是nil : 想請問大大們應該怎麼去設計? 原文描述的問題的確是有點模糊, 如果原文作者要問的問題是: 想做一個 繼承 UIView 的子類, 其子類具有類似 UITableView 的 DataSource Protocol, 讓 delegate 引用 (例如 numberOfRowsInSection) 該怎麼設計? (原 PO 嘗試的結果是 , delegate 抓到回傳結果是 nil) 我個人就曾經有過上述的問題, 如果原 PO 問的是這個, 在下在此提出個人的心得... 以 UITableView 為例, 它有個方法 reloadData, 每次執行的時候, 會讓它的 delegate (教學通常用 ViewController 作為它的 delegate) 先跑一次 numberOfRowsInSection 取得數量(count), 然後透過 tableView:cellForRowAtIndexPath 讓 delegate 依照 0 -> count-1 產生 UITableView Cell, tableView 接收到從 delegate 傳回的 cell 之後 做一些動作(如顯示出來) 所以,參考 UITableView 的做法, 該怎麼設計一個 UIView 子類? 你可以模仿 UITableView 的 reloadData 方法 (假設就叫 reloadData 好了) 並保證這個 reloadData 方法在子類產生實例(Instance)的階段, 就至少被呼叫一次(reloadData) (看是 init / initWithFrame / layoutSubviews / awakeFromNib / ..., 這幾個地方用途不一樣,用在哪裡不一定,依介面功能而定, 使用上要特別小心,請自行嘗試,此不多解釋) 然後在這個自訂 reloadData 方法內, 讓 delegate 去執行 DataSource Protocol (如 numberOfRowsInSection 取得數量), 你必須保證在此之前,delegate 就已經有數量可以回傳, 不然就可能是 nil 或可能出現其他問聽。 以上是 個人心得 & 還沒有 UICollectionView 之前,自己刻一個簡單排列樣式的辛路歷程 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.190.123 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1498116438.A.03D.html ※ 編輯: benjenq (114.47.190.123), 06/22/2017 17:46:51

06/23 09:18, , 1F
沒錯!!我就是這個問提~~~感謝大大分享!!
06/23 09:18, 1F
文章代碼(AID): #1PIt5M0z (MacDev)
文章代碼(AID): #1PIt5M0z (MacDev)