先上效果图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];
}
}