版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UITableView講師:劉凡技術(shù)博客:新浪微博:UITableView實(shí)例——以垂直滾動(dòng)方式顯示數(shù)據(jù)列表UITableView實(shí)例——不同類型的UITableViewCellUITableView的兩種內(nèi)置樣式UITableViewStylePlainUITableViewStyleGrouped數(shù)據(jù)源(dataSource)和代理(delegate)UITableView需要一個(gè)數(shù)據(jù)源(dataSource)來(lái)顯示數(shù)據(jù),UITableView會(huì)向數(shù)據(jù)源查詢一共有多少行數(shù)據(jù)以及每一行顯示什么數(shù)據(jù)等。沒(méi)有設(shè)置數(shù)據(jù)源的UITableView只是個(gè)空殼。凡是遵守UITableViewDataSource協(xié)議的OC對(duì)象,都可以是UITableView的數(shù)據(jù)源通常都要為UITableView設(shè)置代理對(duì)象(delegate),以便在UITableView觸發(fā)一下事件時(shí)做出相應(yīng)的處理,比如選中了某一行。凡是遵守了UITableViewDelegate協(xié)議的OC對(duì)象,都可以是UITableView的代理對(duì)象通常情況下,會(huì)讓控制器充當(dāng)UITableView的dataSource和delegateUITableView的數(shù)據(jù)源協(xié)議示意圖id<UITableViewDataSource>
dataSourceUITableViewUITableViewDataSource協(xié)議//一共有多少組數(shù)據(jù)-(NSInteger)numberOfSectionsInTableView://每一組有多少行數(shù)據(jù)-(NSInteger)tableView:numberOfRowsInSection://每一行具體顯示的內(nèi)容-(UITableViewCell*)tableView:cellForRowAtIndexPath:dataSource對(duì)象(遵從協(xié)議,實(shí)現(xiàn)方法)UITableView的代理協(xié)議示意圖id<UITableViewDelegate>
delegateUITableViewUITableViewDelegate協(xié)議//選中了某一行(void)tableView:didSelectRowAtIndexPath://每一行有多高-(CGFloat)tableView:heightForRowAtIndexPath:delegate對(duì)象(遵從協(xié)議,實(shí)現(xiàn)方法)UITableView分組數(shù)據(jù)演練1——使用代碼分組UITableView分組數(shù)據(jù)演練2——城市信息UITableViewCellUITableView的每一行都是一個(gè)UITableViewCell,通過(guò)dataSource的tableView:cellForRowAtIndexPath:方法來(lái)初始化每一行UITableViewCell是UIView的子類,內(nèi)部有個(gè)默認(rèn)的子視圖:contentView。contentView是UITableViewCell顯示內(nèi)容的父視圖,并負(fù)責(zé)顯示一些輔助指示視圖。輔助指示視圖的作用是顯示一個(gè)表示動(dòng)作的圖標(biāo),可以通過(guò)設(shè)置UITableViewCell的accessoryType來(lái)顯示,默認(rèn)是UITableViewCellAccessoryNone,即不顯示輔助指示視圖
,其他值如下:UITableViewCellAccessoryDisclosureIndicatorUITableViewCellAccessoryDetailDisclosureButtonUITableViewCellAccessoryCheckmarkUITableViewCell——contentViewcontentView下默認(rèn)有3個(gè)子視圖,其中的2個(gè)是UILabel,通過(guò)textLabel和detailTextLabel屬性訪問(wèn),第3個(gè)是UIImageView,通過(guò)imageView屬性訪問(wèn)UITableViewCell的UITableViewCellStyle,用于決定使用contentView的哪些子視圖,以及這些子視圖在contentView中的位置,對(duì)應(yīng)樣式如下UITableViewCellStyleDefaultUITableViewCellStyleValue1UITableViewCellStyleSubtitleUITableViewCellStyleValue2UITableView演練3——商品列表UITableView演練4——更新商品列表MVC體系結(jié)構(gòu)示意圖MVC體系結(jié)構(gòu)是大多數(shù)iPhone應(yīng)用的基本體系結(jié)構(gòu),由三部分組成:控制器Controller模型Model視圖View包含數(shù)據(jù)及數(shù)據(jù)處理方法顯示模型數(shù)據(jù)中的內(nèi)容告訴視圖顯示哪些模型內(nèi)容告訴模型如何基于用戶在視圖上的操作做出變化UITableViewCell對(duì)象的重用原理iOS設(shè)備的內(nèi)存有限,如果用UITableView顯示成千上萬(wàn)條數(shù)據(jù),就需要成千上萬(wàn)個(gè)UITableViewCell對(duì)象的話,那將會(huì)耗盡iOS設(shè)備的內(nèi)存。要解決該問(wèn)題,需要重用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ì)象UITableViewCell對(duì)象的重用示意圖Itcast-0Itcast-1Itcast-2緩存池UITableViewCell對(duì)象的重用原理還有一個(gè)非常重要的問(wèn)題:有時(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í)來(lái)設(shè)置reuseIdentifier(一般用UITableViewCell的類名)。當(dāng)UITableView要求dataSource返回UITableViewCell時(shí),先通過(guò)一個(gè)字符串標(biāo)識(shí)到對(duì)象池中查找對(duì)應(yīng)類型的UITableViewCell對(duì)象,如果有,就重用,如果沒(méi)有,就傳入這個(gè)字符串標(biāo)識(shí)來(lái)初始化一個(gè)UITableViewCell對(duì)象UITableViewCell對(duì)象的重用示意圖緩存池HerCellMyCellHerCell她
我她她她她
我
我HerCell關(guān)于UITableView性能優(yōu)化使用的提示創(chuàng)建UITableViewCell時(shí),必須設(shè)置一個(gè)唯一標(biāo)示去緩存池取出UITableViewCell時(shí),必須傳入一個(gè)標(biāo)示UITableView的編輯模式UITableView有個(gè)editing屬性,當(dāng)設(shè)置為YES時(shí),可以進(jìn)入編輯模式。在編輯模式下,可以管理表格中的行,比如改變行的排列順序、增加行、刪除行,但不能修改行的內(nèi)容開(kāi)啟編輯模式的方法:@property(nonatomic,getter=isEditing)BOOLediting;-(void)setEditing:(BOOL)editinganimated:(BOOL)animated;拖住進(jìn)行排序點(diǎn)擊進(jìn)行刪除在UITableView中刪除或添加行1.開(kāi)啟表格的編輯模式2.實(shí)現(xiàn)UITableViewDataSource的方法:-(void)mitEditingStyle:forRowAtIndexPath:3.實(shí)現(xiàn)UITableViewDelegate的方法:-(UITableViewCellEditingStyle)tableView:editingStyleForRowAtIndexPath:注意:如果不實(shí)現(xiàn)該方法,默認(rèn)將編輯模式視為刪除在UITableView中刪除或添加行的代碼實(shí)現(xiàn)//判斷當(dāng)前的編輯模式if(editingStyle==UITableViewCellEditingStyleDelete){
//1.刪除真實(shí)數(shù)據(jù)[_dataList
removeObjectAtIndex:indexPath.row];
NSLog(@"%@",_dataList);
//2.更新表格數(shù)據(jù)[tableViewdeleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationRight];}else{
//1.添加真實(shí)數(shù)據(jù)[_dataList
insertObject:@"新建數(shù)據(jù)..."atIndex:indexPath.row+1];
NSLog(@"%@",_dataList);
//2.刷新表格數(shù)據(jù)
NSIndexPath*path=[NSIndexPath
indexPathForRow:indexPath.row+1
inSection:indexPath.section];[tableViewinsertRowsAtIndexPaths:@[path]
withRowAnimation:UITableViewRowAnimationTop];}移動(dòng)UITableView的行1.開(kāi)啟表格的編輯模式2.實(shí)現(xiàn)UITableViewDataSource的方法:-(void)tableView:moveRowAtIndexPath:toIndexPath:注意:只要實(shí)現(xiàn)了該方法,即可實(shí)現(xiàn)表格移動(dòng)四種刷新表格數(shù)據(jù)的方法//新增表格數(shù)據(jù)[tableViewinsertRowsAtIndexPaths:@[path]
withRowAnimation:UITableViewRowAnimationTop];//刪除表格數(shù)據(jù)[tableViewdeleteRowsAtIndexPaths:@[path]
withRowAnimation:UITableViewRowAnimationRight];//局部刷新指定的行[tableView
reloadRowsAtIndexPaths:@[path]
withRowAnimation:UITableViewRowAnimationMiddle];//刷新全部表格數(shù)據(jù)[tableViewreloadData];UITableView編輯模式演練UITabelView常用屬性分隔線屬性separatorStyle分隔線樣式separatorColor
分隔線顏色選中屬性allowsSelection
允許選中allowsMultipleSelection
允許多選行數(shù)indexPathsForSelectedRows
當(dāng)前選中行數(shù)indexPathsForVisibleRows
當(dāng)前可見(jiàn)行數(shù)背景backgroundView 背景視圖selectedBackgroundView
選中時(shí)的背景視圖另外,UITableViewCell的selectionStyle屬性可設(shè)置被選中時(shí)的背景顏色:UITableViewCellSelectionStyleNone
沒(méi)有顏色UITableViewCellSelectionStyleBlue
藍(lán)色(默認(rèn))UITableViewCellSelectionStyleGray
灰色自定義UITableViewCell有三種方式自定義單元格:StoryboardXIB代碼注意:通過(guò)XIB或者Storyboard自定義單元格時(shí),需要指定單元格的可重用標(biāo)示符如果使用XIB方式,需要在viewDidload方法中,注冊(cè)XIB文件UINib*nib=[UINib
nibWithNibName:@”bookCell"
bundle:[NSBundle
mainBundle]];[self.tableView
registerNib:nibforCellReuseIdentifier:@”cell"];UITableViewCellcontentViewButton自定義表格行演練(1)——使用tag自定義表格行注意:在按鈕點(diǎn)擊的監(jiān)聽(tīng)事件中UITableViewCell的獲取方法button.superview.superview通過(guò)按鈕點(diǎn)擊事件獲取在xib中,不能直
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 票務(wù)代理企業(yè)社會(huì)責(zé)任實(shí)踐考核試卷
- 魚(yú)油制品在改善女性更年期癥狀中的應(yīng)用考核試卷
- 膠合板企業(yè)的綠色供應(yīng)鏈管理考核試卷
- 水產(chǎn)品加工設(shè)備維護(hù)與管理技巧考核試卷
- 租賃合同的違約處理與法律救濟(jì)考核試卷
- 橡膠板在高速列車密封系統(tǒng)中的應(yīng)用考核試卷
- 冷凍飲品生產(chǎn)質(zhì)量控制要點(diǎn)考核試卷
- 野生動(dòng)物保護(hù)與國(guó)際公約考核試卷
- 收藏品市場(chǎng)調(diào)研數(shù)據(jù)分析與報(bào)告撰寫考核試卷
- 2024年度貴州省安全員之B證(項(xiàng)目負(fù)責(zé)人)真題練習(xí)試卷A卷附答案
- 【課件】2025高三英語(yǔ)一輪復(fù)習(xí)備考策略及方法指導(dǎo)
- 綠化養(yǎng)護(hù)服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 2024河南鄭州熱力集團(tuán)限公司招聘公開(kāi)引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(kù)(共500題)答案詳解版
- 建筑地基基礎(chǔ)檢測(cè)規(guī)范DBJ-T 15-60-2019
- 空氣源熱泵機(jī)房系統(tǒng)施工安全生產(chǎn)保證措施
- 晉祠完整分享
- 新蘇教版六年級(jí)上冊(cè)《科學(xué)》全一冊(cè)全部課件(含19課時(shí))
- 公共關(guān)系學(xué)完整教學(xué)課件
- 正五行日課神煞應(yīng)用表
- 綠色中國(guó)風(fēng)國(guó)潮文化通用PPT模板
- 新學(xué)期校園大隊(duì)委員競(jìng)聘小學(xué)生卡通自我介紹ppt模板課件
評(píng)論
0/150
提交評(píng)論