您的位置:首页 > 产品设计 > UI/UE

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

2017-01-06 16:15 393 查看
先上效果图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];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息