TableView์ ๋์ ๋ฐฉ์๊ณผ ํ๋ฉด์ Cell์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ต์ํ ๊ตฌํํด์ผ ํ๋ DataSource ๋ฉ์๋๋ฅผ ์ค๋ช ํ์์ค
-
TableView๋ "ํ๋กํ ํ์
์
"์ ํตํด ์
๋ค์ ๊ตฌ์ฑํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ํ
์ด๋ธ ๋ทฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ด๋ ํ ์
๋ค์ ์ฌ์ฉํ๊ณ ์ด๋ป๊ฒ ๋ฐฐ์น ํ ๊ฒ์ธ์ง ๊ตฌํํด์ฃผ์ด์ผ ํ๋๋ฐ ์ด๋ฅผ ์ํด TableView์ DataSource์ Delegate๋ฅผ ์ฑํํ๊ณ , ๊ตฌํํ ๊ฐ์ฒด์๊ฒ TableView๊ฐ ์ด๋ฌํ ๊ถํ์ ์์ํด์ฃผ์ด์ผ ํ๋ค.
ํ๋กํ ํ์ ์ ์ด๋ ๊ฐ๋ฐ์๊ฐ ์์๋ก ์ง์ ํ์ฌ ํ ์ด๋ธ๋ทฐ ์์์ ์ฌ์ฉํ ์ ๋ค์ ์ค๊ณ๋
-
cell ์์ฑ์
-
awakeFromNib()
๋ก ์ ์ ๋ง๋ค์ด์ค๋ค.tableView(_:willDisplay:forRowAt:)
์ด ๋ง๋ค์ด์ง๋ ์ ๋ง๋ค ์คํ๋๋ค.
-
ํ๋ฉด์ display๋๋ ์ ์ด ๋ง๋ค์ด์ง ํ,
tableView(_:prefetchRowsAt:indexPath:)
๊ฐ ํธ์ถ๋๋ค.- prefetch๋ ํ๋ฉด์์๋ ์๋ณด์ด์ง๋ง ์์ผ๋ก ๋ณด์ฌ์ง ์ ๋ค์ ๋ฏธ๋ฆฌ ์ค๋นํด์ฃผ๋ ์ญํ ์ํ๋ค.
์คํฌ๋กค ์
-
์คํฌ๋กค์ด ์ผ์ด๋๋ฉฐ ๋ณด์ฌ์ง๋ ์ ์
cellForRowAt
,willDisplay
๊ฐ ๋ฐ์ํ๊ณprefetchRowsAt
์ด ์๋ํ๋ฉด์ prefetch queue์ ์๋ ์ ๋ค์ ์กฐํํ๋ค. -
๊ทธ ํ์
tableView(_:didEndDisplaying:forRowAt:)
๊ฐ ํธ์ถ๋๋ฉด์ display๋๋ ์ ์ด ์ฌ๋ผ์ง๋ค. -
์ดํ๋ถํฐ๋ ์ ์ด ๋ง๋ค์ด์ง ๋
awakeFromNib()
์ด ์๋prepareForReuse()
๊ฐ ํธ์ถ- prepareForReuse()์์ ์ ์ด ์ฌ์ฌ์ฉ๋ ๋ ์ ์ ์ด๊ธฐํํด์ฃผ๋ ์์ ์ ํด์ฃผ๊ณค ํ๋ค.
-
-
@required // ํน์ ์์น์ ํ์ํ ์ ์ ์์ฒญํ๋ ๋ฉ์๋ func tableView(UITableView, cellForRowAt: IndexPath) // ๊ฐ ์น์ ์ ํ์ํ ํ์ ๊ฐ์๋ฅผ ๋ฌป๋ ๋ฉ์๋ func tableView(UITableView, numberOfRowsInSection: Int)
- UITableViewDelegate Methods -
MVC์ค Controller๋ถ๋ถ
// ์ง์ ๋ ํ์ด ์ ํ๋์์์ ์๋ฆฌ๋ ๋ฉ์๋ func tableView(UITableView, didSelectRowAt: IndexPath) // ์ง์ ๋ ํ์ ์ ํ์ด ํด์ ๋์์์ ์๋ฆฌ๋ ๋ฉ์๋ func tableView(UITableView, didDeselectRowAt: IndexPath) // ํน์ ์์น ํ์ ๋์ด๋ฅผ ๋ฌป๋ ๋ฉ์๋ func tableView(UITableView, heightForRowAt: IndexPath) // ํน์ ์์น ํ์ ๋ค์ฌ์ฐ๊ธฐ ์์ค์ ๋ฌป๋ ๋ฉ์๋ func tableView(UITableView, indentationLevelForRowAt: IndexPath) // ํน์ ์น์ ์ ํค๋๋ทฐ ๋๋ ํธํฐ๋ทฐ๋ฅผ ์์ฒญํ๋ ๋ฉ์๋ func tableView(UITableView, viewForHeaderInSection: Int) func tableView(UITableView, viewForFooterInSection: Int) // ํน์ ์น์ ์ ํค๋๋ทฐ ๋๋ ํธํฐ๋ทฐ์ ๋์ด๋ฅผ ๋ฌผ์ด๋ณด๋ ๋ฉ์๋ func tableView(UITableView, heightForHeaderInSection: Int) func tableView(UITableView, heightForFooterInSection: Int) // ํ ์ด๋ธ๋ทฐ๊ฐ ํธ์ง๋ชจ๋์ ๋ค์ด๊ฐ์์ ์๋ฆฌ๋ ๋ฉ์๋ func tableView(UITableView, willBeginEditingRowAt: IndexPath) // ํ ์ด๋ธ๋ทฐ๊ฐ ํธ์ง๋ชจ๋์์ ๋น ์ ธ๋์์์ ์๋ฆฌ๋ ๋ฉ์๋ func tableView(UITableView, didEndEditingRowAt: IndexPath?)
- UITableViewDataSource -
MVC์ค Model๋ถ๋ถ
@optional // ํ ์ด๋ธ๋ทฐ์ ์ด ์น์ ๊ฐ์๋ฅผ ๋ฌป๋ ๋ฉ์๋ func numberOfSections(in: UITableView) // ํน์ ์น์ ์ ํค๋ ํน์ ํธํฐ ํ์ดํ์ ๋ฌป๋ ๋ฉ์๋ func tableView(UITableView, titleForHeaderInSection: Int) func tableView(UITableView, titleForFooterInSection: Int) // ํน์ ์์น์ ํ์ ์ญ์ ๋๋ ์ถ๊ฐ ์์ฒญํ๋ ๋ฉ์๋ func tableView(UITableView, commit: UITableViewCellEditingStyle, forRowAt: IndexPath) // ํน์ ์์น์ ํ์ด ํธ์ง ๊ฐ๋ฅํ์ง ๋ฌป๋ ๋ฉ์๋ func tableView(UITableView, canEditRowAt: IndexPath) // ํน์ ์์น์ ํ์ ์ฌ์ ๋ ฌ ํ ์ ์๋์ง ๋ฌป๋ ๋ฉ์๋ func tableView(UITableView, canMoveRowAt: IndexPath) // ํน์ ์์น์ ํ์ ๋ค๋ฅธ ์์น๋ก ์ฎ๊ธฐ๋ ๋ฉ์๋ func tableView(UITableView, moveRowAt: IndexPath, to: IndexPath)