ios实现两个tableview联动
两个tableview的联动,滑动左侧tableview,右侧tableview跟着滑动
其实实现起来比较简单,只是需要搞清楚他们之间的区别和联系,还有就是调用一个
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
这个方法,从而实现左右两个tableview的联动
直接上代码
@implementation ViewController
{
UITableView *_rightTableView;
UITableView *_leftTableView;
NSArray *_leftTableSource;
NSArray *_rightTableSource;
}
初始化数据源
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_leftTableSource = @[@"11",@"22",@"33",@"44",@"55",@"66"];
_rightTableSource = @[@{@"header":@"11",@"title":@[@"aa",@"bb",@"cc",@"dd",@"ee",@"ff"]},
@{@"header":@"22",@"title":@[@"gg",@"mm",@"nn",@"oo",@"pp",@"qq"]},
@{@"header":@"33",@"title":@[@"rr",@"ss",@"jj",@"xx",@"yy",@"zz"]},
@{@"header":@"44",@"title":@[@"aa",@"bb",@"cc",@"dd",@"ee",@"ff"]},
@{@"header":@"55",@"title":@[@"gg",@"mm",@"nn",@"oo",@"pp",@"qq"]},
@{@"header":@"66",@"title":@[@"rr",@"ss",@"jj",@"xx",@"yy",@"zz"]}];
[self setupSomeParamars];
}
- (void)setupSomeParamars
{
_rightTableView = [[UITableView alloc] initWithFrame:CGRectMake(100, 0, self.view.frame.size.width - 100, self.view.frame.size.height) style:UITableViewStyleGrouped];
_rightTableView.dataSource = self;
_rightTableView.delegate = self;
[self.view addSubview:_rightTableView];
_leftTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, self.view.frame.size.height) style:UITableViewStyleGrouped];
_leftTableView.dataSource = self;
_leftTableView.delegate = self;
[self.view addSubview:_leftTableView];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *reuseIdentifer = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifer];
if(!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifer];
}
if(tableView == _rightTableView){
cell.textLabel.text = [_rightTableSource[indexPath.section] objectForKey:@"title"][indexPath.row];
}else if (tableView == _leftTableView){
cell.textLabel.text = _leftTableSource[indexPath.row];
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (tableView == _rightTableView) {
return 50;
}else{
return 50;
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableView == _rightTableView) {
return _rightTableSource.count;
}else{
return 1;
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == _leftTableView) {
return _leftTableSource.count;
}else{
return [[_rightTableSource[section] objectForKey:@"title"] count];
}
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (tableView == _rightTableView) {
return [_rightTableSource[section] objectForKey:@"header"];
}else{
return nil;
}
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if(tableView == _rightTableView){
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width-100, 40)];
label.backgroundColor = [UIColor cyanColor];
label.text = [_rightTableSource[section] objectForKey:@"header"];
label.textColor = [UIColor redColor];
return label;
}else{
return nil;
}
}
联动效果在于这里
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if(tableView == _rightTableView){
[_leftTableView selectRowAtIndexPath:[NSIndexPath indexPathForItem:section inSection:0] animated:YES scrollPosition:UITableViewScrollPositionNone];
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。