iOS scrollView嵌套tableView,可同时滑动

效果图:

 

这个页面可以分成三个部分:最上面为view,可以放广告等效果,中间是segment选项,下面的部分可滑动显示,应使用scrollView,根据选项个数循环创建tableView。

创建scrollView,根据segment的个数创建tableView

@property (nonatomic, strong) UIScrollView *scrollView;

@property (nonatomic, strong) UITableView *tableView;

@property (nonatomic, strong) NSMutableArray *tableArray;

 

if(! _tableArray)
{
    _tableArray = [NSMutableArray array]; 
}

self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, Tool_GetMaxYWithView(_segmentView), SCREEN_WIDTH, SCREEN_HEIGHT - Tool_GetMaxYWithView(_segmentView))];
        
        self.scrollView.backgroundColor = [UIColor whiteColor];
        
        self.scrollView.delegate = self;
        
 
        // 设置scrollView的滑动范围
        self.scrollView.contentSize = CGSizeMake(SCREEN_WIDTH * 3, _scrollView.frame.size.height);
        
        self.scrollView.pagingEnabled = YES;
        self.scrollView.scrollEnabled = YES;
        
        for (int i = 0 ; i < 3; i++)
        {
            UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH * i, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height) style:UITableViewStyleGrouped];
            
            tableView.delegate = self;
            tableView.dataSource = self;
            
            [self.scrollView addSubview:tableView];
            [self.tableArray addObject:tableView];
        }
        
        self.tableView = self.tableArray.firstObject;

        [self.view addSubview:self.scrollView];

 

   滑块选择的代码

_segmentView = [[CustomSelectView alloc]initWithFrame:CGRectMake(0, Tool_GetMaxYWithView(_headView), SCREEN_WIDTH, 50) andItmeTitles:@[@"第一页",@"第二页",@"第三页"] andTitleColor:[UIColor blackColor]];
        
        _segmentView.tinColor = [UIColor redColor];

 [_segmentView segmentedDidSelectHandle:^(NSInteger index)
         {
             
              [self.scrollView setContentOffset:CGPointMake(index * SCREEN_WIDTH, 0) animated:YES];
             self.tableView = [self.tableArray objectAtIndex:index];
             [self.tableView reloadData];

         }];

 

 实现scrollViewDelegate的代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    
    if (scrollView == self.scrollView)
    {
        CGFloat a = self.scrollView.contentOffset.x/self.scrollView.frame.size.width;
        
        self.tableView = [self.tableArray objectAtIndex:a];
        
        self.segmentView.selectedSegmentIndex = a;
        
        [self.tableView reloadData];
    }
}

 

实现tableView的代理方法

// 一共有多少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if(self.tableView == self.tableArray[0]) //显示第一个表格
    {
        return 3;
    }
    else if (self.tableView == self.tableArray[1]) //显示第二个表格
    {
        return 4;
    }
    else
    {
        return 5;
    }
}

//每组有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

// 具体的cell显示
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellCtr"];
    
    if(!cell)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellCtr"];
    }
    
    cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.section];
    
    return cell;
}

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值