UITableView與UITableViewController

UITableViewController和UITableView之間的關(guān)系

  UITableViewController的指定初始化方法是initWithStyle:。調(diào)用initWithStyle:時(shí)要傳入一個(gè)類(lèi)型為UITableViewStyle的常數(shù),該常數(shù)決定了UITableView對(duì)象的風(fēng)格。
 傳入tableView:numberOfRowsInSection:方法的section參數(shù)起什么作用?UITableView對(duì)象可以分段顯示數(shù)據(jù),每個(gè)表格段(section)包含一組獨(dú)立的行。


UITableViewCell布局
UITableViewCell的視圖層次結(jié)構(gòu)
UITableViewCellStyle常量

UITableView對(duì)象會(huì)將移出窗口的UITableViewCell對(duì)象放入U(xiǎn)ITableViewCell對(duì)象池,等待重用。當(dāng)UITableView對(duì)象要求數(shù)據(jù)源返回某個(gè)UITableViewCell對(duì)象時(shí),數(shù)據(jù)源可以先查看對(duì)象池。如果有未使用的UITableViewCell對(duì)象,就可以用新的數(shù)據(jù)配置這個(gè)UITableViewCell對(duì)象,然后將其返回給UITableView對(duì)象,從而避免創(chuàng)建新對(duì)象。這里還有一個(gè)問(wèn)題:因?yàn)橛袝r(shí)需要?jiǎng)?chuàng)建UITableViewCell的子類(lèi),用于實(shí)現(xiàn)特定的外觀或特性,所以UITableView對(duì)象可能會(huì)擁有不同類(lèi)型的UITableViewCell對(duì)象。
如果UITableViewCell對(duì)象池中的對(duì)象創(chuàng)建自不同的子類(lèi),那么UITableView對(duì)象就有可能得到錯(cuò)誤類(lèi)型的UITableViewCell對(duì)象。鑒于上述原因,必須確保UITableView對(duì)象能夠得到指定類(lèi)型的UITableViewCell對(duì)象,這樣才能確定返回的對(duì)象會(huì)擁有哪些屬性和方法。


重用UITableViewCell對(duì)象

每個(gè)UITableViewCell對(duì)象都有一個(gè)類(lèi)型為NSString的reuseIdentifier屬性。當(dāng)數(shù)據(jù)源向UITableView對(duì)象獲取可重用的UITableViewCell對(duì)象時(shí),可傳入一個(gè)字符串并要求UITableView對(duì)象返回相應(yīng)的UITableViewCell對(duì)象,UITableViewCell對(duì)象的reuseIdentifier屬性必須和傳入的字符串相同。按照約定,應(yīng)該將UITableViewCell或者UITableViewCell子類(lèi)的類(lèi)名用作reuseIdentifier。
  重用UITableViewCell對(duì)象,意味著UITableView對(duì)象只需要?jiǎng)?chuàng)建少量的UITableViewCell對(duì)象,從而減少內(nèi)存的占用量,提升用戶(hù)界面的流暢性。

//直接創(chuàng)建UITableViewCell對(duì)象,不重用
UITableViewCell*cell=[[UITableViewCellalloc] initWithStyle: UITableViewCellStyleDefault 
reuseIdentifier:@"UITableViewCell"];  

//創(chuàng)建或重用UITableViewCell對(duì)象  
UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier: @"UITableViewCell" 
 forIndexPath:indexPath];

之前的代碼都是手動(dòng)創(chuàng)建UITableViewCell對(duì)象的。為了重用UITableViewCell對(duì)象,必須將創(chuàng)建的過(guò)程交由系統(tǒng)管理——需要告訴表視圖,如果對(duì)象池中沒(méi)有UITableViewCell對(duì)象,應(yīng)該初始化哪種類(lèi)型UITableViewCell對(duì)象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,663評(píng)論 1 32
  • UITableViewCell控件空間構(gòu)造 cell的子控件是contentView,contentView的子控...
    CoderZXS閱讀 850評(píng)論 0 1
  • UITableViewCell 父類(lèi)是UIView UITableView的每一行都是一個(gè)UITableViewC...
    翻這個(gè)墻閱讀 6,818評(píng)論 0 1
  • UITableView繼承于UIScrollView,可以滾動(dòng)。 UITableView的每一條數(shù)據(jù)對(duì)應(yīng)的單元格叫...
    肉肉要次肉閱讀 633評(píng)論 5 4
  • UITableView - 表視圖 UITableView是作為IOS中顯示數(shù)據(jù)列表最常用的一個(gè)控件,繼承UISc...
    尋心_0a46閱讀 1,941評(píng)論 0 1

友情鏈接更多精彩內(nèi)容