首页 > 代码库 > 第4课、UITableView专题(五)

第4课、UITableView专题(五)

 

 

目标:

  主从表关系 : 点击“省份名称” -  显示“城市列表”

 

 

#import "MainTableViewController.h"#import "ShiTableViewController.h"@interface MainTableViewController ()//省份数组@property (strong, nonatomic) NSArray * arrSheng;//城市字典@property (strong, nonatomic) NSDictionary * arrShi;@end@implementation MainTableViewController- (id)initWithStyle:(UITableViewStyle)style{    self = [super initWithStyle:style];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];        [self initArrayData];}#pragma mark - 初始化 “省、市”数组- (void)initArrayData{    // 从plist文件中,读出数据    NSBundle * bundle = [NSBundle mainBundle];    self.arrSheng = [NSArray arrayWithContentsOfFile:[bundle pathForResource:@"provinces" ofType:@"plist"]];    self.arrShi = [NSDictionary dictionaryWithContentsOfFile:[bundle pathForResource:@"cities" ofType:@"plist"]];}#pragma mark - ** 准备连线操作 **- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{    S2iShiTableViewController * shiVC = segue.destinationViewController;        //需要知道用户点击的哪一行,取出对应的数组。        //1. 用户选中的一行    NSInteger index = [self.tableView indexPathForSelectedRow].row;    //2. 从省份数组中提取省份名称    NSString * shengName = self.arrSheng[index];    //3. 从城市字典中,查找数组。    NSArray * arrCities = self.arrShi[shengName];    //4. 将查找结果设置给目标控制器    [shiVC setArrCities:arrCities];}#pragma mark - Table view data source//多少行- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return self.arrSheng.count;}//单元格-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString * cellIdentifier = @"myCell";    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];    if (cell == nil)    //如果没在缓冲池找到单元格,实例化一个新的单元格    {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];    }        //显示内容    [cell.textLabel setText:self.arrSheng[indexPath.row]];        return cell;}//选中行-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSLog(@"%@", indexPath);}@end

 

 

 

 

#import <UIKit/UIKit.h>@interface ShiTableViewController : UITableViewController@property (strong,nonatomic) NSArray * arrCities;@end

 

 

 

#import "ShiTableViewController.h"@interface ShiTableViewController ()@end@implementation ShiTableViewController- (id)initWithStyle:(UITableViewStyle)style{    self = [super initWithStyle:style];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];            }#pragma mark - Table view data source//行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return self.arrCities.count;}//单元格- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString * cellIdentifier = @"myCell";    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];    if (cell == nil)    {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];    }        //单元格显示内容    cell.textLabel.text = self.arrCities[indexPath.row];        return cell;    }@end

 

 

 

  备注:

    1.  从plist文件中,读取数据。

    2.  tableViewCell中Identifier 设置成 myCell。

    3.  可以看下 Accessory 设置Cell 右边icon的几种图标。

    4.  两个控制器,建立连线后,通过

        - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法可以进行传值。

    

   

  

 

第4课、UITableView专题(五)