IOS表格視圖的制作_第1頁(yè)
IOS表格視圖的制作_第2頁(yè)
IOS表格視圖的制作_第3頁(yè)
IOS表格視圖的制作_第4頁(yè)
IOS表格視圖的制作_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、UITableView表格視圖知識(shí)點(diǎn)大綱(1) 表格視圖簡(jiǎn)單實(shí)用(2) 單元格具體內(nèi)容(3) 單元格復(fù)用知識(shí)點(diǎn)詳解(1) 表格視圖簡(jiǎn)單使用 / UITableViewStylePlain 普通類型 (常用顯示大量信息) / UITableViewStyleGrouped 分組類型(常用與配置界面, 聯(lián)系人界面) UITableView *tableView = UITableView alloc initWithFrame:self.view.bounds style:UITableViewStylePlain;/ UITableViewDataSource控制表格視圖的外觀, UITable

2、ViewDelegate處理表格視圖的事件 / tableView數(shù)據(jù)源在本類本對(duì)象中/ <UITableViewDataSource>/ 與數(shù)據(jù)有關(guān),tableView要顯示什么數(shù)據(jù) 比如有多少行 有多少分區(qū) / 注意:代理方法中,有兩個(gè)是必須實(shí)現(xiàn)的,沒有實(shí)現(xiàn),程序在啟動(dòng)后就會(huì)崩掉 tableView.dataSource = self;/ 表格視圖的代理方法/ <UITableViewDelegate>/ 和數(shù)據(jù)無關(guān)的相關(guān)信息,側(cè)重于行為 比如每一行有多高tableView.delegate = self;/ 表格視圖如何知道該有多少行?- (NSInteger)t

3、ableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section/ 每行應(yīng)該顯示什么數(shù)據(jù) / 什么時(shí)候調(diào)用? 在顯示單元格的時(shí)候調(diào)用 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath(2) 單元格具體內(nèi)容/ 注意: *為必須實(shí)現(xiàn)方法/ 1.返回組數(shù)/ 2.返回每組的行數(shù) */ 3.返回每行中顯示數(shù)據(jù)(cell) *indexPath.section / 哪一

4、組indexPath.row / 哪一行/* * cell的類型 UITableViewCellStyleDefault,   默認(rèn)模式,標(biāo)題+可選圖像 UITableViewCellStyleValue1,    標(biāo)題+可選圖像+明細(xì)信息(和標(biāo)題在同一行) UITableViewCellStyleValue2,    標(biāo)題+明細(xì)信息 UITableViewCellStyleSubtitle   標(biāo)題+可選圖像+明細(xì)(和標(biāo)題不在同一行) */UITableViewCell *

5、cell = UITableViewCell alloc initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil;    / 標(biāo)題    cell.textLabel.text = name;    / 明細(xì)信息 (UITableViewCellStyleValue1類型中)    cell.detailTextLabel.text = ro;    / 圖像    cell.imageVi

6、ew.image = UIImage imageNamed:hero.icon; / 背景顏色,會(huì)影響到未選中表格行的標(biāo)簽背景 cell.backgroundColor = UIColor redColor; / 在實(shí)際開發(fā)中,使用背景視圖的情況比較多 / 背景視圖,不需要指定大小,cell會(huì)根據(jù)自身的尺寸,自動(dòng)填充調(diào)整背景視圖的顯示 UIImage *bgImage = UIImage imageNamed:"rr_pub_button_silver" stretchableImageWithLeftCapWidth:8 topCapHeight:8 cell.backg

7、roundView = UIImageView alloc initWithImage:bgImage;/ UIView *backView = UIView alloc init;/ backView.backgroundColor = UIColor redColor;/ cell.backgroundView = backView; / 選中的背景視圖 UIView *selectedBackImage = UIView alloc init; selectedBackImage.backgroundColor = UIColor yellowColor; cell.selectedBa

8、ckgroundView = selectedBackImage; / 設(shè)置右邊按鈕 / > UITableViewCellAccessoryDisclosureIndicator 箭頭可以提示用戶,當(dāng)前行可以點(diǎn)擊的,通常選中可以跳轉(zhuǎn)到新頁(yè)面 / > UITableViewCellAccessoryCheckmark 對(duì)號(hào),通常提示用戶改行設(shè)置完畢,比較少用 / > UITableViewCellAccessoryDetailButton 嘆號(hào)按鈕,通常點(diǎn)擊按鈕可以做獨(dú)立操作,例如alterview / > UITableViewCellAccessoryDetailD

9、isclosureButton 按鈕+右箭頭/ 點(diǎn)擊右邊嘆號(hào)按鈕的處理方法是在代理方法中 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;/ 自定義右邊按鈕 UISwitch *mySwitch = UISwitch alloc init; mySwitch addTarget:self action:selector(mySwitchClick:) forControlEvents:UIControlEventValueChanged; cell.accessoryView = mySwitch; / 如何修改

10、單元格的高度/ 細(xì)節(jié): cell默認(rèn)的高度是44/ 44是iOS界面設(shè)計(jì)中最小(適宜)觸控面積/ 應(yīng)用場(chǎng)景:很多應(yīng)用程序,每一行的高度是不一樣的,例如新浪微博(每個(gè)人發(fā)的消息不一樣高度就不一樣) - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath/ 具體設(shè)置哪一行高度 if (indexPath.section = 1 && indexPath.row = 3) return 80; return 44; / 返回組數(shù), 告訴tableVie

11、w要顯示多少組 / 細(xì)節(jié): 要是這個(gè)方法不寫, 默認(rèn)是一組 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView return _dataArray.count; / 作用: 返回行數(shù) / 參數(shù)section: 表示到底要返回哪一組的行數(shù) -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section /先根據(jù)section獲取到子數(shù)組 NSArray *subArray = _dataArraysectio

12、n; return subArray.count; / 處理某行的點(diǎn)擊事件 / 注意: 千萬不要寫成didDeSelect, didDeSelect表示取消選擇 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath UIAlertView *alertView = UIAlertView alloc init; alertView.message = NSString stringWithFormat:"您點(diǎn)擊了%d組%d行",indexPath.

13、section,indexPath.row; alertView addButtonWithTitle:"取消" alertView show; / accessoryType為按鍵時(shí),點(diǎn)擊右側(cè)按鍵的監(jiān)聽事件/ 此方法不會(huì)觸發(fā)選中行,跟行是相互獨(dú)立的/ 只是為accessoryType服務(wù),對(duì)定義控件不相應(yīng)- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath NSLog("測(cè)試accessory&quo

14、t;); / 分組標(biāo)題,表格視圖分組類型時(shí)顯示 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section return "標(biāo)題" / 分組腳注,表格視圖分組類型時(shí)顯示 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section return "腳注" / 分組標(biāo)題的行高 - (CGFloat)tableVie

15、w:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section return 100; / 分組腳注的行高 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section if (section = 1) return 80; return 20; / 分組標(biāo)題圖片 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection

16、:(NSInteger)section if (section = 1) UIImageView *imageView = UIImageView alloc init; imageView.image = UIImage imageNamed:"img_01" return imageView; return nil; / 分組腳注圖片 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section if (section = 3) UIImageView *

17、imageView = UIImageView alloc init; imageView.image = UIImage imageNamed:"img_01" return imageView; return nil; / 右邊索引/ 索引數(shù)組中的“內(nèi)容”,跟分組無關(guān)/ 索引數(shù)組中的下標(biāo),對(duì)應(yīng)的是分組下表- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView NSMutableArray *mArray = NSMutableArray alloc init; for (int i=

18、9;A' i<='Z' i+) mArray addObject:NSString stringWithFormat:"%c",i; return mArray; (3) 單元格復(fù)用/ 這個(gè)方法調(diào)用的頻率很高,是實(shí)現(xiàn)cell明細(xì)的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath / 單元格循環(huán)引用 (這樣就可以循環(huán)使用開始創(chuàng)建出來的,屏幕大小個(gè)數(shù)的單元格) / ID 可重用標(biāo)示符字符串 /

19、static 靜態(tài)變量,能夠保證系統(tǒng)為變量在內(nèi)存中只分配一次內(nèi)存空間 / 靜態(tài)變量,一旦創(chuàng)建,就不會(huì)被釋放,只有當(dāng)程序被銷毀時(shí),才會(huì)釋放! static NSString *ID = "Cell" / 1 去緩存池查找可重用的單元格 UITableViewCell *cell = tableView dequeueReusableCellWithIdentifier:ID; / 2 如果沒找到 if (cell = nil) / 實(shí)例化新的單元格 cell = UITableViewCell alloc initWithStyle:UITableViewCellStyleS

20、ubtitle reuseIdentifier:ID; (4) 沙盒相關(guān)內(nèi)容(真機(jī)調(diào)試) / /var/mobile/Applications/FB2A2FE7-59A3-4F84-AEF9-47B7A40DD121 NSString *dirt = NSHomeDirectory(); NSLog("%",dirt); / /var/mobile/Applications/FB2A2FE7-59A3-4F84-AEF9-47B7A40DD121/ NSString *path = NSBundle mainBundle; NSLog("path:%",

21、path); / 如何在UI工程中讀取文件(例如plist文件) / 以后iOS工程編譯完后變成了一個(gè)程序包(bundle) / iOS系統(tǒng)上一個(gè)應(yīng)用所有的數(shù)據(jù)都放在一個(gè)目錄中,不能訪問目錄之外的文件,這個(gè)目錄稱為沙盒目錄 / 一句話說明: 以后要想讀取文件,使用相對(duì)路徑 / 獲取沙盒目錄 NSString *homeDir = NSHomeDirectory(); NSLog("homeDir = %",homeDir); / 設(shè)置文件位置 / NSBundle表示應(yīng)用包 NSString *file = NSBundle mainBundle pathForResource:"bookData" ofType:"plist" /讀取plist文件 NSArray *array = NSArray alloc initWithContentsOfFile:file; NSLog("array = %",array); _dataArray = NSMutableArray alloc initWithArray:array;(5) 添加滾動(dòng)視圖/搜索欄/ tableView.tableHeaderView,放在tableview最頂端,頭部視

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論