8-20学习练习[用两个tableview实现类似省市联动选择效果]

简介:

在一个View中显示两个tableView,要求使用statedictionary.plist中的数据,其中key作为左边的数据,每点击一个key,在右边的tableView中显示对应的号码列表,并且左边的tableView,前5行为一个分区(title显示top),剩下的为另一个分区(title显示other)

效果图:

问题:1.为什么选择之后取消蓝色背景取消不了
代码:
ViewController.h:
#import <UIKit/UIKit.h>  @interface DXWViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> @property (retain, nonatomic) IBOutlet UITableView *TableView1; @property (retain, nonatomic) IBOutlet UITableView *TableView2; @property (retain, nonatomic) NSDictionary *dic;//原始数据 @property(retain, nonatomic)NSMutableArray * keys;//可以修改的key(用作分区) @property(retain,nonatomic)NSArray *secArr;//保存某一个key对应的value @end

ViewController.m:
#import "DXWViewController.h" @interface DXWViewController ()  @end  @implementation DXWViewController  - (void)viewDidLoad {     [super viewDidLoad]; 	NSString *path = [[NSBundle mainBundle] pathForResource:@"statedictionary" ofType:@"plist"];     //最原始的数据,不可改变     self.dic = [NSDictionary dictionaryWithContentsOfFile:path];     //NSLog(@"%@",self.dic);          self.keys = [[NSMutableArray alloc] init];     NSArray *arr=[self.dic allKeys];     arr = [arr sortedArrayUsingSelector:@selector(compare:)];     self.keys = arr;     self.secArr = [[NSArray alloc] initWithArray:[self.dic objectForKey:[self.keys objectAtIndex:0]]];      }   - (void)didReceiveMemoryWarning {     [super didReceiveMemoryWarning];      }  //tableView有多少分区,左边前5行作为一个分区标题top,剩下的为另外一个分区标题other -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {     if (tableView == self.TableView1) {         return 2;     }     else         return 1; } //每个cell显示的内容 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {     NSInteger section = [indexPath section];     NSInteger row = [indexPath row];     if (tableView == self.TableView1)     {         static NSString *str1 = @"str1";         UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:str1];         if (cell == nil) {             cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str1];         }         cell.textLabel.text = [self.keys objectAtIndex:row];         return cell;                      }     else     {         static NSString *str = @"str";         UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:str];         if (cell == nil) {             cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str];         }         cell.textLabel.text = [self.secArr objectAtIndex:row];         return  cell;     } }  //每个分区对应多少行 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {     if (tableView == self.TableView1) {         if (section == 0) {             return 5;         }         else         {             return ([self.keys count] - 5);         }     }     else     {         return [self.secArr count];     } }  //在每个分区Title上显示什么内容 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {     if (tableView == self.TableView1) {         if (section == 0)         {             return @"top";         }         else         {             return @"other";         }     }     else         return nil; }  //设置索引 //-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView //{ //    if (tableView == self.TableView1) { //        return [[NSArray alloc] initWithObjects:@"top",@"other", nil]; //    } //}  //点击选择 -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {     if (tableView == self.TableView1) {         self.secArr = [[NSArray alloc] initWithArray:[self.dic objectForKey:[self.keys objectAtIndex:[indexPath row]]]];         NSLog(@"%@",self.secArr);         //取消选中         [tableView deselectRowAtIndexPath:indexPath animated:YES];     }     [self.TableView2 reloadData]; }  - (void)dealloc {     [_TableView1 release];     [_TableView2 release];     [self.secArr release];     [self.dic release];     [self.keys release];     [super dealloc]; } @end





















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366427 ,如需转载请自行联系原作者
相关文章
|
索引
8-20学习练习[用两个tableview实现类似省市联动选择效果]
在一个View中显示两个tableView,要求使用statedictionary.plist中的数据,其中key作为左边的数据,每点击一个key,在右边的tableView中显示对应的号码列表,并且左边的tableView,前5行为一个分区(title显示top),剩下的为另一个分区(title显示other) 效果图: 问题:1.
821 0
|
iOS开发
iOS开发之UITableView联动实现城市选择器
在 iOS开发之城市选择器一文中用两列的UIPickerView实现了城市选择器,今天用两个UITableView来实现一下,首先这种联动在很多地方用得上,而且方法有好几种,我这里选择了个人喜欢的一种方式:弄两个UITableView,让当前控制器管理。
1115 0
|
XML 前端开发 数据格式
第五例:省市联动2|快速学习
快速学习第五例:省市联动2
127 0
第五例:省市联动2|快速学习
|
XML 前端开发 数据格式
第五例:省市联动1| 学习笔记
快速学习第五例:省市联动1
|
XML 前端开发 数据格式
第五例:省市联动2| 学习笔记
快速学习第五例:省市联动2
第五例:省市联动2| 学习笔记
|
XML 前端开发 数据格式
第五例:省市联动1|学习笔记
快速学习第五例:省市联动1
第五例:省市联动1|学习笔记
WdatePicker日历控件联动效果
1 2 开始日期: 3 4 5 6 7 8 结束日期: 9 10 11 12
883 0
|
8月前
|
SQL 缓存 JSON
vue利用级联选择器实现全国省市区乡村五级菜单联动
vue利用级联选择器实现全国省市区乡村五级菜单联动

热门文章

最新文章