之前用UIPickerView实现了省市联动,上个月网友让用UITableView给他实现了下。今天也把这些贴出来。
//
// ViewController.m
// doubleTable
//
// Created by City--Online on 15/8/5.
// Copyright (c) 2015年 City--Online. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
@property(nonatomic,strong) NSDictionary *dicData;
//第一个tableView选择的Index
@property (nonatomic,assign) int *firstIndex;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_firstIndex=0;
_firstTable.delegate=self;
_firstTable.dataSource=self;
_firstTable.translatesAutoresizingMaskIntoConstraints = NO;
_firstTable.tableFooterView=[[UIView alloc]initWithFrame:CGRectZero];
_secondTable.delegate=self;
_secondTable.dataSource=self;
_secondTable.translatesAutoresizingMaskIntoConstraints = NO;
_secondTable.tableFooterView=[[UIView alloc]initWithFrame:CGRectZero];
_dicData=@{@"广东省":@[@"深圳",@"广州",@"东莞"],@"河南省":@[@"驻马店",@"周口",@"郑州"]};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_firstTable]-0-[_secondTable(_firstTable)]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_firstTable,_secondTable)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-80-[_firstTable]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_firstTable)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-80-[_secondTable]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_secondTable)]];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView==_firstTable) {
return _dicData.allKeys.count;
}
else if (tableView==_secondTable)
{
NSString *key=[_dicData.allKeys objectAtIndex:_firstIndex];
NSArray *arr=[_dicData objectForKey:key];
return arr.count;
}
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
}
if (tableView==_firstTable) {
if (indexPath.row==_firstIndex) {
cell.backgroundColor=[UIColor redColor];
}
else
{
cell.backgroundColor=[UIColor whiteColor];
}
cell.textLabel.text=[_dicData.allKeys objectAtIndex:indexPath.row];
}
else
{
cell.backgroundColor=[UIColor grayColor];
NSString *key=[_dicData.allKeys objectAtIndex:_firstIndex];
NSArray *arr=[_dicData objectForKey:key];
cell.textLabel.text=[arr objectAtIndex:indexPath.row];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView==_firstTable) {
_firstIndex=indexPath.row;
[_secondTable reloadData];
[_firstTable reloadData];
}
else if (tableView==_secondTable)
{
NSLog(@"%ld %ld",_firstIndex,indexPath.row);
}
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
#ifdef __IPHONE_8_0
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
if([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]){
[cell setPreservesSuperviewLayoutMargins:NO];
}
#endif
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end