我們先來(lái)看看Cell的聲明周期:
1.首先當(dāng)用戶滑動(dòng)屏幕的時(shí)候,系統(tǒng)會(huì)重cell緩沖池里面取出一個(gè)cell,然后調(diào)用cell的prepareForReuse()方法,可以在這個(gè)方法中對(duì)重置cell的狀態(tài)等
2.當(dāng)用戶繼續(xù)滑動(dòng)屏幕的時(shí)候,會(huì)調(diào)用dataSource的cellForRowAt indexPath方法,在這里我們可以對(duì)cell的模型(model)進(jìn)行賦值,也就是將數(shù)據(jù)渲染到cell上(數(shù)據(jù)驅(qū)動(dòng)UI)
3.當(dāng)cell馬上將要進(jìn)入屏幕的時(shí)候,會(huì)調(diào)用delegate的willDisplay cell方法,在這里我們可以獲取到上一個(gè)播放的cell,然后讓播放器停止對(duì)上一個(gè)cell的播放來(lái)避免當(dāng)用戶拖拽cell到下一個(gè)cell時(shí),上一個(gè)cell還在播放的情況.
4.當(dāng)cell完全進(jìn)入屏幕的時(shí)候,會(huì)調(diào)用didEndDisplaying cell方法,在這里我們可以獲取當(dāng)前播放的cell,然后讓控制器播放,來(lái)達(dá)到當(dāng)用戶拖拽到下一個(gè)cell時(shí),能夠正常播放.
下面我們看看截圖:

