UITableViewCell之注冊(cè)不注冊(cè)

結(jié)論:

所謂的注冊(cè)不注冊(cè)其實(shí)指:【有沒有為某一identifier 注冊(cè)一個(gè)Class】
或者理解為:有沒有把一個(gè)identifier和一個(gè)Class相互綁定。
如果發(fā)生綁定诸衔,當(dāng)標(biāo)識(shí)符為identifier 的Cell隊(duì)列中沒有可復(fù)用的cell時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)綁定的Class類型的cell颇玷。
如果沒有綁定Class,那么我們要手動(dòng)判定是否無可復(fù)用的cell署隘,并手動(dòng)新建一個(gè)cell。
一句話總結(jié):注冊(cè)后就不用管cell是否需要新建了亚隙。

注冊(cè)情況:

當(dāng)使用register方法

//不使用nib
- (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier;
//使用nib
- (void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier;

cellClass和identifier相互綁定磁餐,對(duì)應(yīng)使用dequeue方法(有indexPath參數(shù))

//使不使用nib對(duì)于dequeue無影響
- (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;

這時(shí)候不需要判斷cell是否為空,判斷和創(chuàng)建步驟交由系統(tǒng)來自動(dòng)執(zhí)行诊霹。
注1:注冊(cè)的情況下cell默認(rèn)調(diào)用如下兩個(gè)方法實(shí)現(xiàn)實(shí)例化

//不使用nib
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;
//使用nib
- (void)awakeFromNib;

系統(tǒng)默認(rèn)且僅會(huì)調(diào)用這兩個(gè)固定的方法來實(shí)現(xiàn)實(shí)例化羞延。
所以若需要自定義,重寫這兩個(gè)方法脾还。
若需要傳參則需要單獨(dú)設(shè)立方法伴箩,在dequeue方法之后調(diào)用。
注2:一個(gè)class可以綁定多個(gè)identifier鄙漏。

不注冊(cè)情況:

而不使用register方法嗤谚,沒有把Class和identifier綁定,所以常見的寫法是這樣的

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
if (cell == nil) {
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}

我們直接使用dequeue方法(無indexPath參數(shù)),然后手動(dòng)判斷是否取到可復(fù)用的cell怔蚌。如果沒有取到巩步,我們手動(dòng)的去實(shí)例化一個(gè)新的cell。
注:
不注冊(cè)的劣勢(shì)在于我們需要手動(dòng)判斷和手動(dòng)實(shí)現(xiàn)實(shí)例化
但優(yōu)勢(shì)在于桦踊,實(shí)例化的方法可以完全自定義椅野,我們可以在實(shí)例化時(shí)就把參數(shù)傳入。

基礎(chǔ)示例:

1.基于class的注冊(cè)籍胯,使用registerClass方法

//在viewDidLoad 中使用
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"identifier"];
//在tableView: cellForRowAtIndexPath: 中使用
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier" forIndexPath:indexPath];

2.基于nib的注冊(cè)竟闪,使用registerNib方法

//在viewDidLoad 中使用
[self.tableView registerNib:[UINib nibWithNibName:@"MyCommonCell" bundle:nil] forCellReuseIdentifier:@"identifier"];
//在tableView: cellForRowAtIndexPath: 中使用
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier" forIndexPath:indexPath];

3.基于class的不注冊(cè),手動(dòng)判別cell是否為空

//在tableView: cellForRowAtIndexPath: 中使用
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
if (cell == nil) {
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}

4.基于class的不注冊(cè)杖狼,手動(dòng)判別cell是否為空

//在tableView: cellForRowAtIndexPath: 中使用
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
if (cell == nil) {
     cell = [[[NSBundle mainBundle]loadNibNamed:@"MyCommonCell" owner:self options:nil] lastObject];
}

注:基于nib的創(chuàng)建也是不能夾帶參數(shù)的炼蛤,實(shí)例化后單獨(dú)使用傳參方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝶涩,一起剝皮案震驚了整個(gè)濱河市理朋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌子寓,老刑警劉巖暗挑,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋除,死亡現(xiàn)場(chǎng)離奇詭異斜友,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)垃它,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門鲜屏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人国拇,你說我怎么就攤上這事洛史。” “怎么了酱吝?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵也殖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)忆嗜,這世上最難降的妖魔是什么己儒? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捆毫,結(jié)果婚禮上闪湾,老公的妹妹穿的比我還像新娘。我一直安慰自己绩卤,他們只是感情好途样,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著濒憋,像睡著了一般何暇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跋炕,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天赖晶,我揣著相機(jī)與錄音,去河邊找鬼辐烂。 笑死遏插,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纠修。 我是一名探鬼主播胳嘲,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扣草!你這毒婦竟也來了了牛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤辰妙,失蹤者是張志新(化名)和其女友劉穎鹰祸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體密浑,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛙婴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尔破。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片街图。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懒构,靈堂內(nèi)的尸體忽然破棺而出餐济,到底是詐尸還是另有隱情,我是刑警寧澤胆剧,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布絮姆,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏篙悯。R本人自食惡果不足惜冤灾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辕近。 院中可真熱鬧韵吨,春花似錦、人聲如沸移宅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漏峰。三九已至糠悼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浅乔,已是汗流浹背倔喂。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靖苇,地道東北人席噩。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像贤壁,于是被迫代替她去往敵國(guó)和親悼枢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,100評(píng)論 1 32
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理脾拆,服務(wù)發(fā)現(xiàn)馒索,斷路器,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,383評(píng)論 8 265
  • 白掌名船,葉長(zhǎng)圓形或近披針形绰上,兩端漸尖,基部楔形渠驼。是由一塊白色的苞片和一條黃白色的肉穗所組成蜈块,酷似手掌,故名白掌渴邦。畫白...
    教畫畫的貓叔閱讀 873評(píng)論 0 3
  • 1152644893d2閱讀 828評(píng)論 0 51