成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

iOS開發(fā)那些事--簡單表視圖

表視圖是iOS開發(fā)中使用最頻繁的視圖,我們一般都會選擇以表的形式來展現(xiàn)數(shù)據(jù),比如通訊錄、頻道列表等。表視圖分段、分組、索引等功能使我們所展 示的數(shù)據(jù)看起來更規(guī)整更有調(diào)理,更令人興奮的是表視圖還可以利用細(xì)節(jié)展示等功能多層次的展示數(shù)據(jù),正所謂一表勝千言。 不過,相較于其它控件表視圖的使用比較復(fù)雜,但是對比于表視圖各種靈活多變的功能,我們在使用上花費的努力還是相當(dāng)值得的。

站在用戶的角度思考問題,與客戶深入溝通,找到虞城網(wǎng)站設(shè)計與虞城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋虞城地區(qū)。

 

簡單表視圖

表視圖的形式靈活多變,本著由淺入深的原則,我們先從簡單表視圖開始學(xué)習(xí)。本節(jié)講的簡單表視圖是動態(tài)表,(iOS 5之前全部是動態(tài)表沒有動態(tài)表和靜態(tài)表區(qū)別)。

創(chuàng)建簡單表視圖

在iOS 5之后我們可以使用xib或者故事板技術(shù)創(chuàng)建表視圖,要顯示的是一個最基本的表,我們只需實現(xiàn)UITableViewDataSource協(xié)議中必須要實 現(xiàn)的方法即可,分別是tableView:numberOfRowsInSection:和 tableView:cellForRowAtIndexPath:就可以了。:

iOS開發(fā)那些事--簡單表視圖

構(gòu)造方法initWithFrame:style:是在實例化表視圖的時候調(diào)用,如果采用xib或故事板來設(shè)計表視圖,那么表視圖的創(chuàng)建是在實例化 表視圖控制器的時候完成的,表視圖顯示的時候會發(fā)出tableView:numberOfRowsInSection:消息詢問當(dāng)前節(jié)中的行數(shù),表視圖單 元格顯示的時候會發(fā)出tableView:cellForRowAtIndexPath:消息為單元格提供顯示數(shù)據(jù)。

我們創(chuàng)建一個簡單表視圖,單元格使用默認(rèn)樣式,有圖標(biāo)和主標(biāo)題,顯示的是世界杯球隊的信息。

 iOS開發(fā)那些事--簡單表視圖

使用“Single View Application”模板創(chuàng)建一個工程,工程名為“SimpleTable”,打開IB設(shè)計畫面,在“View Controller Scene”選中“View Controller”刪除控制器,然后從控件庫中拖拽一個“Table View Controller”到設(shè)計畫面。

 iOS開發(fā)那些事--簡單表視圖

將h文件中ViewController的父類從原來的UIViewController修改為UITableViewController。

在IB設(shè)計畫面左側(cè)的Scene列表中選擇“Table View Controller Scene” → “Table View Controller”, 打開表視圖控制器的標(biāo)識檢查器,在Class選項里選擇“ViewController”,這是我們自己的編寫視圖控制器。

iOS開發(fā)那些事--簡單表視圖

然后在Scene列表中選擇“Table View Controller Scene” → “Table View Controller” → “Table View”, 打開表視圖的屬性檢查器。Content下有兩個選項“Dynamic Prototypes”和“Static Cells”,這兩個選項只有在故事板中才有。“Dynamic Prototypes”是構(gòu)建“動態(tài)表”

iOS開發(fā)那些事--簡單表視圖

如果通過代碼來實現(xiàn)單元格的創(chuàng)建,“Prototype Cells”項目要設(shè)為0,代碼實現(xiàn)的模式代碼如下:

 

  1. static NSString *CellIdentifier = @”CellIdentifier”; 
  2.  
  3. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
  4.  
  5. if (cell == nil) { 
  6.  
  7. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
  8.  

Identifier是可重用單元格標(biāo)識符,這個可重用單元格與Collection視圖中的可重用單元格概念一樣。首先,在表視圖中查找是否有可 以重用的單元格,如果沒有就通過initWithStyle: reuseIdentifier:構(gòu)造方法創(chuàng)建一個單元格對象。

如果要利用故事板設(shè)計單元格,要選擇“Table View Controller Scene” → “Table View Controller” → “Table View” → “Table View Cell”,打開單元格的屬性檢查器,Style下有很多選項, Identifier是指可重用單元格標(biāo)識符。

 iOS開發(fā)那些事--簡單表視圖

這樣操作以后在代碼部分就不需要實例化單元格了,我們直接通過設(shè)定的Identifier取得單元格的實例,以此達(dá)到重用單元格的目的。

 

  1. static NSString *CellIdentifier = @”CellIdentifier”; 
  2.  
  3. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
  4.  
  5.     if (cell == nil) { 
  6.  
  7.         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
  8.  
  9.     } 

我們需要將“team.plist”和“球隊圖片”添加到工程中,ViewController.h文件的代碼如下:

 

  1. #import <UIKit/UIKit.h> 
  2.  
  3. @interface ViewController : UITableViewController 
  4.  
  5. @property (nonatomic, strong) NSArray *listTeams; 
  6.  
  7. @end 

需要將ViewController的父類修改為UITableViewController。還定義NSArray*類型的屬性 listTeams,listTeams用來裝載從文件中讀取的數(shù)據(jù)。讀取屬性列表文件team.plist的操作是在viewDidLoad方法中實現(xiàn) 的

 iOS開發(fā)那些事--簡單表視圖

ViewController.m文件的viewDidLoad方法代碼如下:

 

  1. - (void)viewDidLoad 
  2.  
  3.  
  4. [super viewDidLoad]; 
  5.  
  6. NSBundle *bundle = [NSBundle mainBundle]; 
  7.  
  8. NSString *plistPath = [bundle pathForResource:@"team" ofType:@"plist"]; 
  9.  
  10. //獲取屬性列表文件中的全部數(shù)據(jù) 
  11.  
  12. self.listTeams = [[NSArray alloc] initWithContentsOfFile:plistPath]; 
  13.  
  14.  
  15. 我們再看看UITableViewDataSource協(xié)議方法,代碼如下: 
  16.  
  17. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
  18.  
  19.  
  20. return [self.listTeams count]; 
  21.  
  22.  
  23. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
  24.  
  25.  
  26. static NSString *CellIdentifier = @”CellIdentifier”; 
  27.  
  28. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
  29.  
  30. if (cell == nil) { 
  31.  
  32. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
  33.  
  34.  
  35. NSUInteger row = [indexPath row]; 
  36.  
  37. NSDictionary *rowDict = [self.listFilterTeams objectAtIndex:row]; 
  38.  
  39. cell.textLabel.text =  [rowDict objectForKey:@"name"]; 
  40.  
  41. NSString *p_w_picpathPath = [rowDict objectForKey:@"p_w_picpath"]; 
  42.  
  43. p_w_picpathPath = [p_w_picpathPath stringByAppendingString:@".png"]; 
  44.  
  45. cell.p_w_picpathView.p_w_picpath = [UIImage p_w_picpathNamed:p_w_picpathPath]; 
  46.  
  47. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
  48.  
  49. return cell; 
  50.  

由于當(dāng)前的這個表事實上只有一個節(jié),因此不需要對節(jié)進(jìn)行區(qū)分,在tableView: numberOfRowsInSection:方法中直接返回listTeams屬性的長度即可。 tableView:cellForRowAtIndexPath:方法中NSIndexPath參數(shù)的row方法可以獲得當(dāng)前的單元格行索引。 cell.accessoryType屬性是設(shè)置擴展視圖類型。

我們可以將單元格的樣式UITableViewCellStyleDefault替換為其它三種,來體驗一下其它的三種單元格樣式的效果。

iOS開發(fā)那些事--簡單表視圖

簡單表案例運行結(jié)果

文章題目:iOS開發(fā)那些事--簡單表視圖
當(dāng)前路徑:http://jinyejixie.com/article46/pgeghg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站、軟件開發(fā)微信小程序、全網(wǎng)營銷推廣移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
富平县| 琼结县| 黄浦区| 钟山县| 嘉鱼县| 土默特右旗| 盘山县| 渭源县| 崇文区| 青岛市| 文山县| 泰来县| 资阳市| 资阳市| 越西县| 青川县| 岳池县| 怀集县| 新宁县| 乌拉特后旗| 遵义市| 北流市| 吴江市| 金溪县| 长垣县| 密云县| 洛南县| 樟树市| 河池市| 岢岚县| 丹江口市| 卢氏县| 桃园县| 蓝山县| 南昌县| 谢通门县| 廉江市| 无锡市| 永州市| 会理县| 重庆市|