且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-27 13:30:38

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

效果图:
8-20学习练习[用两个tableview实现类似省市联动选择效果]
问题: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,如需转载请自行联系原作者