簡介:上篇做了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];}
- (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; }
- (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/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝!