首页 > 代码库 > 第4课、UITableView专题(二)
第4课、UITableView专题(二)
对TableView进一步理解
1. 创建项目。-- 省市级联小例子。
2. 添加.plist文件。可以理解为数据字典。键值对(Key - Value)
2.1 cities.plist - 城市
2.2 provinces.plist - 省份
3. 常用方法:
3.1 QQ,微信,通讯录常见的,列表右侧有:ABCDE... 字样,就是如下方法。
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
3.2 点击某一行执行方法(要遵守UITableViewDelegate协议)
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>@end
#import "ViewController.h"@interface ViewController ()//城市字典@property (strong, nonatomic) NSDictionary * arrCities;//省数组@property (strong, nonatomic) NSArray * arrProvinces;@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; //初始化 NSBundle * bundle = [NSBundle mainBundle]; self.arrCities = [NSDictionary dictionaryWithContentsOfFile:[bundle pathForResource:@"cities" ofType:@"plist"]]; self.arrProvinces = [NSArray arrayWithContentsOfFile:[bundle pathForResource:@"provinces" ofType:@"plist"]];}#pragma mark - tableView DataSource#pragma mark 分组数量- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return self.arrProvinces.count;}#pragma mark 每组行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ NSString * provinceName = self.arrProvinces[section]; NSArray * arrCityName =[self.arrCities objectForKey:provinceName]; return arrCityName.count;}#pragma mark 每行内容-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil]; NSString * provinceName = self.arrProvinces[indexPath.section]; NSArray * arrCityNames = [self.arrCities objectForKey:provinceName]; cell.textLabel.text = arrCityNames[indexPath.row]; return cell;}#pragma mark 头部-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return self.arrProvinces[section];}#pragma mark 分组信息- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{ return self.arrProvinces;}#pragma mark - tableView Delegate #pragma mark 点击一行-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSString * provinceName = self.arrProvinces[indexPath.section]; NSArray * arrCityNames = [self.arrCities objectForKey:provinceName]; NSLog(@"%@", arrCityNames[indexPath.row]);}@end
介绍一个调试的方法:
用处:
1. 数组, log时,出现UTF-8编码。
2. 对象,log时,出现指针地址等等。
总结:
1. 创建一个分组。命名:Log,继承NSArray
2. 就可以看到,新建出 名为:NSArrar+Log 文件。
3. 重写父类的描述方法。代码如下:
#import "NSArray+log.h"@implementation NSArray (log)- (NSString *)descriptionWithLocale:(id)locale{ NSMutableString * strDescript = [NSMutableString string]; [strDescript appendString:@"("]; [strDescript appendFormat:@"(数量总数==%i)", self.count]; for (id obj in self) { [strDescript appendFormat:@"\n\t\"%@\",", obj]; //格式化数组格式。 } [strDescript appendString:@")"]; return strDescript;}@end
4. 外面的正常log数组就可以。
NSLog(@"%@", self.arrProvinces);
5. 截图如下:
消化下。。。。 继续前进。。。。
第4课、UITableView专题(二)