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];

}

创建两个tableview

- (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];

    

}

设置cell的显示

- (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];

    }

}


详情见demo,不过有些不足,望大牛们多多指点

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。