iOS學習之分段Table View的使用(Grouped樣式表格)

來源:互聯網
上載者:User

   簡介:上篇做了Table View的一些介紹 ,還做了一個TableView 的Plain樣式的例子,這篇我們學習Grouped樣式表的例子,還有用到前面讀取Plist的知識(見iOS學習之 plist檔案的讀寫),把Plist檔案中的資料讀取出來,放到Table view裡展示出來。這裡把全國30多個省份的城市,都列出來了,plist檔案裡還有城市的行政區,不過這裡只列出省份和城市就ok了。如下:

 

 

那麼開始吧。

1、建立項目

新的一個名稱為TableViewGrouped的Single View Application項目,開啟項目的xib檔案,拖拽TableView控制項到xib檔案中,擺正位置。

 

2、給建立的TableView找到他的歸屬

選中新添的TableView ,Connection Inspector,找到delegate和datasource,從它們右邊的圓圈拉線到Files Owner表徵圖上,參考上篇的第3步:

3、設定Table View的屬性為Grouped樣式

 

 

4、匯入plist檔案

從其他檔案夾匯入Provineces.plist檔案,這個檔案我會傳到原始碼裡,大家都能方便使用了,包括全國30個省份和城市,還有城市的區也有。

 

5、添加.h .m的實現代碼。

.h檔案添加一個property

 

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (strong, nonatomic) NSArray *provinces;@end

 

第一步從Plist讀取出資料,第二步給Table添加資料。

在viewDidLoad讀取Plist,plist是個array類型的,所以使用Array讀取。

.m檔案的實現。

 

@implementation ViewController@synthesize provinces;- (void)viewDidLoad{    [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.    NSBundle *bundle = [NSBundle mainBundle];    NSString *plistPath = [bundle pathForResource:@"Provineces" ofType:@"plist"];    NSMutableArray *array=[[NSMutableArray  alloc] initWithContentsOfFile:plistPath];    self.provinces = array;}

 

 

 

 

實現TableView表格部分,下面這些方法看方法名就能大概明白意思。

 

  •  這個方法用來告訴表格有幾個分組

 

 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {    return [provinces count];}

 

 

  • 這個方法告訴表格第section個分段有多少行

 

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {        NSArray *cities = [[provinces objectAtIndex:section]objectForKey:@"Citys"];    return [cities count];}

 

 

 

  •    這個方法用來告訴某個分組的某一行是什麼資料,返回一個UITableViewCell

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    NSUInteger section = [indexPath section];     NSUInteger row = [indexPath row];             NSArray *cities = [[provinces objectAtIndex:section]objectForKey:@"Citys"] ;            static NSString *GroupedTableIdentifier = @"cell";     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:                              GroupedTableIdentifier];     if (cell == nil) {         cell = [[UITableViewCell alloc]                 initWithStyle:UITableViewCellStyleDefault                 reuseIdentifier:GroupedTableIdentifier];     }         //給Label附上城市名稱  key 為:C_Name    cell.textLabel.text = [[cities objectAtIndex:row] objectForKey:@"C_Name"];     return cell; }

 

 

  • 這個方法用來告訴表格第section分組的名稱 

 

 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {    NSString *provincName = [[provinces objectAtIndex:section] objectForKey:@"p_Name"];    return provincName; }

 

 

 

  • 重點介紹下這個方法:

 

 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {    //返回省份的數組    NSMutableArray *array = [NSMutableArray arrayWithCapacity:35];    for (NSDictionary *dict in provinces) {        [array addObject:[dict objectForKey:@"p_Name"]];    }    return array;}

返回所有省份名稱的數組 ,通過點擊右邊的省份名稱能快速定位到這個省份的城市,也就是快速定位到這個section。

 

OK,運行。效果如下:

 

試試改成plain樣式的分段TableView看看:

 

以上例子的全部

 

例子的代碼:http://download.csdn.net/detail/totogo2010/4361876

https://github.com/schelling/YcDemo/tree/master/TableViewGrouped

著作權聲明:本文由http://blog.csdn.net/totogo2010/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝! 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.