iOS 利用 UISegmentedControl在同一个控制器切换不同的tableView

先上效果图1:这里写图片描述2:这里写图片描述
类似于QQ顶部的消息、电话选择。原理比较简单:主要通过UISegmentedControl来控制两个tableView的显示来隐藏。直接上代码

#import "LeaveListViewController.h"

@interface LeaveListViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)NSMutableArray *leftArray;
@property (nonatomic,strong)NSMutableArray *rigthArray;
@property (nonatomic,assign)int tag;
@end

@implementation LeaveListViewController
static UITableView *leftTableView;
static UITableView *rigthTaleView;

- (NSMutableArray *)leftArray {
    if (!_leftArray) {
        _leftArray = [NSMutableArray array];
    }
    return _leftArray;
}

- (NSMutableArray *)rigthArray {
    if (!_leftArray) {
        _leftArray = [NSMutableArray array];
    }
    return _leftArray;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tag = 0;
    [self initSegment];
    [self initTableView];
    // Do any additional setup after loading the view.

}

- (void)initSegment{
    //先生成存放标题的数据
    NSArray *array = [NSArray arrayWithObjects:@" 我的 ",@" 处理 ", nil];
    //初始化UISegmentedControl
    UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:array];
    //根据内容定分段宽度
    segment.apportionsSegmentWidthsByContent = YES;
    //开始时默认选中下标(第一个下标默认是0)
    segment.selectedSegmentIndex = 0;
    //控件渲染色(也就是外观字体颜色)
    segment.tintColor = [UIColor whiteColor];
    // 设置指定索引选项的宽度(设置下标为2的分段宽度)
    [segment setWidth:60.0 forSegmentAtIndex:0];
    [segment setWidth:60.0 forSegmentAtIndex:1];
    //添加事件
    [segment addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];
    //添加到视图
    self.navigationItem.titleView = segment;
}

- (void)initTableView {
    leftTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, AMPScreenWidth, AMPScreenheight) style:UITableViewStylePlain];
    leftTableView.delegate = self;
    leftTableView.dataSource = self;
    leftTableView.estimatedRowHeight = 44.0f;
    leftTableView.rowHeight = UITableViewAutomaticDimension;
    leftTableView.showsVerticalScrollIndicator = NO;

    [self.view addSubview:leftTableView];

    rigthTaleView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, AMPScreenWidth, AMPScreenheight) style:UITableViewStylePlain];
    rigthTaleView.delegate = self;
    rigthTaleView.dataSource = self;
    rigthTaleView.estimatedRowHeight = 44.0f;
    rigthTaleView.rowHeight = UITableViewAutomaticDimension;
    rigthTaleView.backgroundColor = [UIColor redColor];
    rigthTaleView.showsVerticalScrollIndicator = NO;

    [self.view addSubview:rigthTaleView];
    if (self.tag == 0) {
        rigthTaleView.hidden = YES;
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (self.tag == 0) {
        return self.leftArray.count;
    }return self.rigthArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.tag == 0) {
        UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"left"];

        return cell;
    }
    else if (self.tag == 1) {
        UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"left"];
        return cell;
    }
    return nil;
}


//点击不同分段就会有不同的事件进行相应
-(void)change:(UISegmentedControl *)sender{
    if (sender.selectedSegmentIndex == 0) {
        leftTableView.hidden = NO;
        rigthTaleView.hidden = YES;

        self.tag = 0;
        [leftTableView reloadData];
    }else if (sender.selectedSegmentIndex == 1){
        rigthTaleView.hidden = NO;
        leftTableView.hidden = YES;

        self.tag = 1;
        [rigthTaleView reloadData];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

主要代码段:

- (void)initSegment{
    //先生成存放标题的数据
    NSArray *array = [NSArray arrayWithObjects:@" 我的 ",@" 处理 ", nil];
    //初始化UISegmentedControl
    UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:array];
    //根据内容定分段宽度
    segment.apportionsSegmentWidthsByContent = YES;
    //开始时默认选中下标(第一个下标默认是0)
    segment.selectedSegmentIndex = 0;
    //控件渲染色(也就是外观字体颜色)
    segment.tintColor = [UIColor whiteColor];
    // 设置指定索引选项的宽度(设置下标为2的分段宽度)
    [segment setWidth:60.0 forSegmentAtIndex:0];
    [segment setWidth:60.0 forSegmentAtIndex:1];
    //添加事件
    [segment addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];
    //添加到视图
    self.navigationItem.titleView = segment;
}

- (void)initTableView {
    leftTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, AMPScreenWidth, AMPScreenheight) style:UITableViewStylePlain];
    leftTableView.delegate = self;
    leftTableView.dataSource = self;
    leftTableView.estimatedRowHeight = 44.0f;
    leftTableView.rowHeight = UITableViewAutomaticDimension;
    leftTableView.showsVerticalScrollIndicator = NO;

    [self.view addSubview:leftTableView];

    rigthTaleView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, AMPScreenWidth, AMPScreenheight) style:UITableViewStylePlain];
    rigthTaleView.delegate = self;
    rigthTaleView.dataSource = self;
    rigthTaleView.estimatedRowHeight = 44.0f;
    rigthTaleView.rowHeight = UITableViewAutomaticDimension;
    rigthTaleView.backgroundColor = [UIColor redColor];
    rigthTaleView.showsVerticalScrollIndicator = NO;

    [self.view addSubview:rigthTaleView];
    if (self.tag == 0) {
        rigthTaleView.hidden = YES;
    }
}

//点击不同分段就会有不同的事件进行相应
-(void)change:(UISegmentedControl *)sender{
    if (sender.selectedSegmentIndex == 0) {
        leftTableView.hidden = NO;
        rigthTaleView.hidden = YES;

        self.tag = 0;
        [leftTableView reloadData];
    }else if (sender.selectedSegmentIndex == 1){
        rigthTaleView.hidden = NO;
        leftTableView.hidden = YES;

        self.tag = 1;
        [rigthTaleView reloadData];
    }
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值