關(guān)情紙尾---UIKit基礎(chǔ)-UITableView

一、基本介紹

在iOS中,要實(shí)現(xiàn)表格數(shù)據(jù)展示,最常用的做法就是使用UITableView
UITableView繼承自UIScrollView,因此支持垂直滾動(dòng),?且性能極佳 庆猫。
UITableView有兩種風(fēng)格:
UITableViewStylePlain
UITableViewStyleGrouped。
這兩者操作起來其實(shí)并沒有本質(zhì)區(qū)別绅络,
只是后者按分組樣式顯示月培,前者按照普通樣式顯示而已。先看一下兩者的應(yīng)用:

二恩急、UItableview展示數(shù)據(jù)的過程

? UITableView需要一個(gè)數(shù)據(jù)源(dataSource)來顯示數(shù)據(jù)
? UITableView會(huì)向數(shù)據(jù)源查詢一共有多少行數(shù)據(jù)以及每?行顯示什么數(shù)據(jù)等
? 沒有設(shè)置數(shù)據(jù)源的UITableView只是個(gè)空殼
? 凡是遵守UITableViewDataSource協(xié)議的OC對(duì)象,都可以是UITableView的數(shù)據(jù)源 
? 展示數(shù)據(jù)的過程:
(1)調(diào)用數(shù)據(jù)源的下面?法得知一共有多少組數(shù)據(jù)
  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
(2)調(diào)用數(shù)據(jù)源的下面?法得知每一組有多少行數(shù)據(jù)  
  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
(3)調(diào)?數(shù)據(jù)源的下??法得知每??顯示什么內(nèi)容
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
注意:UItableview在默認(rèn)情況下是 UITableViewStylePlain杉畜,可以在右側(cè)設(shè)置style

三、自帶的UITableViewCell

3.1衷恭、UITableViewCell的結(jié)構(gòu)
3.2此叠、cell的重復(fù)使用原理
iOS設(shè)備的內(nèi)存有限,如果用UITableView顯示成千上萬條數(shù)據(jù)随珠,
就需要成千上萬個(gè)UITableViewCell對(duì)象的話灭袁,那將會(huì)耗盡iOS設(shè)備的內(nèi)存。
要解決該問題窗看,需要重用UITableViewCell對(duì)象
? 重用原理:當(dāng)滾動(dòng)列表時(shí)茸歧,部分UITableViewCell會(huì)移出窗口,
UITableView會(huì)將窗口外的UITableViewCell放入一個(gè)對(duì)象池中显沈,等待重用软瞎。
當(dāng)UITableView要求dataSource返回UITableViewCell時(shí),dataSource會(huì)先查看這個(gè)對(duì)象池,
如果池中有未使用的UITableViewCell铜涉,dataSource會(huì)用新的數(shù)據(jù)配置這個(gè)UITableViewCell智玻,
然后返回給UITableView,重新顯示到窗口中芙代,從而避免創(chuàng)建新對(duì)象
 
還有一個(gè)非常重要的問題:有時(shí)候需要自定義UITableViewCell(用一個(gè)子類繼承UITableViewCell)
而且每一行用的不一定是同一種UITableViewCell吊奢,
所以一個(gè)UITableView可能擁有不同類型的UITableViewCell,
對(duì)象池中也會(huì)有很多不同類型的UITableViewCell纹烹,
那么UITableView在重用UITableViewCell時(shí)可能會(huì)得到錯(cuò)誤類型的UITableViewCell

解決方案:UITableViewCell有個(gè)NSString *reuseIdentifier屬性页滚,
可以在初始化UITableViewCell的時(shí)候傳入一個(gè)特定的字符串標(biāo)識(shí)
來設(shè)置reuseIdentifier(一般用UITableViewCell的類名)。

當(dāng)UITableView要求dataSource返回UITableViewCell時(shí)铺呵,
先通過一個(gè)字符串標(biāo)識(shí)到對(duì)象池中查找對(duì)應(yīng)類型的UITableViewCell對(duì)象裹驰,
如果有,就重用片挂,如果沒有幻林,就傳入這個(gè)字符串標(biāo)識(shí)來初始化一個(gè)UITableViewCell對(duì)象

四、cell的重用代碼

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(
NSIndexPath *)indexPath
{
    // 1.定義一個(gè)cell的標(biāo)識(shí)
    static NSString *ID = @"Gqcell";
    // 2.從緩存池中取出cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    // 3.如果緩存池中沒有cell
    if(cell == nil) {
        //創(chuàng)建Cell
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
    }
    // 4.設(shè)置cell的屬性...     
      return
     cell;
}}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末音念,一起剝皮案震驚了整個(gè)濱河市沪饺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闷愤,老刑警劉巖整葡,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異讥脐,居然都是意外死亡遭居,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門旬渠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俱萍,“玉大人,你說我怎么就攤上這事告丢∈蟠危” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵芋齿,是天一觀的道長(zhǎng)腥寇。 經(jīng)常有香客問我,道長(zhǎng)觅捆,這世上最難降的妖魔是什么赦役? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮栅炒,結(jié)果婚禮上掂摔,老公的妹妹穿的比我還像新娘术羔。我一直安慰自己,他們只是感情好乙漓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布级历。 她就那樣靜靜地躺著,像睡著了一般叭披。 火紅的嫁衣襯著肌膚如雪寥殖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天涩蜘,我揣著相機(jī)與錄音嚼贡,去河邊找鬼。 笑死同诫,一個(gè)胖子當(dāng)著我的面吹牛粤策,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播误窖,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼叮盘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了霹俺?” 一聲冷哼從身側(cè)響起柔吼,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吭服,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝗罗,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡艇棕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了串塑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沼琉。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桩匪,靈堂內(nèi)的尸體忽然破棺而出打瘪,到底是詐尸還是另有隱情,我是刑警寧澤傻昙,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布闺骚,位于F島的核電站,受9級(jí)特大地震影響妆档,放射性物質(zhì)發(fā)生泄漏僻爽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一贾惦、第九天 我趴在偏房一處隱蔽的房頂上張望胸梆。 院中可真熱鬧敦捧,春花似錦、人聲如沸碰镜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绪颖。三九已至秽荤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菠发,已是汗流浹背王滤。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滓鸠,地道東北人雁乡。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像糜俗,于是被迫代替她去往敵國(guó)和親踱稍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件悠抹,我們平時(shí)使用的軟件中到處都可以看到它的影子珠月,類似...
    liudhkk閱讀 9,006評(píng)論 3 38
  • 掌握 設(shè)置UITableView的dataSource、delegate UITableView多組數(shù)據(jù)和單組數(shù)據(jù)...
    JonesCxy閱讀 1,119評(píng)論 0 2
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,130評(píng)論 30 470
  • 一楔敌、簡(jiǎn)介 官方給出了比較全面的介紹啤挎,要點(diǎn)摘錄如下: table view的作用:導(dǎo)航、展示索引列表卵凑、展示詳情信息庆聘、...
    quantiza閱讀 729評(píng)論 0 1
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件勺卢、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62