作者fenir (severus)
看板MacDev
標題[問題] Delegate & DataSource觀念及疑問
時間Mon Mar 9 19:29:40 2015
剛學swift不是很熟悉,想請教一下delegate & datasource的觀念
以下是我google後自己的理解,不曉得正不正確
--------------------------------------------
用picker view當例子,先創一個single view,把picker view拉到上面
picker view本身需要設定一些參數(component、顯示的行數、顯示的文字)
這些設定不寫在自己的.swift檔,而是集中在view controller的地方統一將裡面所有物件
需要做的設定寫在view controller的.swift檔裡。
所以說某個view裡面的物件需要實做的時候,需要在ViewController.swift繼承
該物件的delegate & datasource
---------------------------------------------
以上解譯對不對?
另外我有一些疑問是
1. delegate中文是指派,dataSource是資料來源,可是以picker view來說:
DataSource裡包含設定# of component和# of rows
delegate裡包含每一列顯示的String
但是我怎麼覺得每一列顯示的String應該是屬於資料來源,
component & rows才是delegate(指派)做的事啊?
還是有什麼更好的記憶方法,我一直搞混這兩個
2. 剛做一個簡單的picker view練習,開single view proj. 把picker view拉上去
原本我以為class ViewController有繼承
UIPickerViewDelegate & UIPickerViewDataSource 就可以了
但是發現這樣沒有顯示任何內容,後來才發現要在Storyboard的地方把picker view
右邊有一個連結圖示,將delegate拉向view controller連結起來才可以
所以是需要拉線+繼承才正確嗎?
https://www.youtube.com/watch?v=MdXmIViD17U&t=467
這篇教學在繼承的部份不需要UIPickerViewDataSource也可以實做component & rows
的func,為什麼?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.139.48
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1425900588.A.40E.html
→ tentenlee: 想太多了 都是delegate 只是它改名稱叫datasource.. 03/09 21:40
→ darktt: delegate通常作為回傳結果使用,dataSource是與上一層要 03/09 21:49
→ darktt: 資料用,dataSource=delegate,差別只是有沒有回傳值而已 03/09 21:49
→ fenir: 所以我只需要繼承UIxxxxxdelegate就可以了不需datasource嗎 03/10 11:29
→ darktt: 繼承只是讓它有自動完成的功能而已 03/10 12:18
→ fenir: 了解 感謝 03/10 12:44