目标:
主从表关系 : 点击“省份名称” - 显示“城市列表”
#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方法可以进行传值。
时间: 2024-10-11 03:21:39