博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中使用UISegmentControl进行UITableView切换
阅读量:6269 次
发布时间:2019-06-22

本文共 4992 字,大约阅读时间需要 16 分钟。

先上图:

我们经常在项目中使用到UISegmentControl进行UITableView的切换 下面我说说我实现的过程。

这个UISegmentControl我是放在导航栏的中间的,实现代码如下:

//创建导航栏分栏控件 -(void)createSegMentController{
    NSArray *segmentedArray = [NSArray arrayWithObjects:@"问答",@"倾述",nil];          UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:segmentedArray];          segmentedControl.frame = CGRectMake(0, 0, 180, 30);          segmentedControl.selectedSegmentIndex = 0;     segmentedControl.tintColor = [UIColor colorWithRed:252/255.0 green:245/255.0 blue:248/255.0 alpha:1];          [segmentedControl addTarget:self action:@selector(indexDidChangeForSegmentedControl:) forControlEvents:UIControlEventValueChanged];          [self.navigationItem setTitleView:segmentedControl]; } 复制代码

下面讲讲如何实现UITableView的切换:

创建两个UITableView UITableView *leftTable; UITableView *rightTable; 复制代码
    leftTable = [[UITableView alloc]initWithFrame:CGRectMake(0,64,WIDTH,HEIGHT-64-44) style:UITableViewStylePlain];     leftTable.delegate = self;     leftTable.dataSource = self;     [leftTable registerNib:[UINib nibWithNibName:@"AnswerCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:AnswerReuseId];     leftTable.separatorStyle = UITableViewCellSeparatorStyleNone;     [self.view addSubview:leftTable];          rightTable = [[UITableView alloc]initWithFrame:CGRectMake(0,64,WIDTH,HEIGHT-64-44) style:UITableViewStylePlain];     rightTable.delegate = self;     rightTable.dataSource = self;     [rightTable registerNib:[UINib nibWithNibName:@"AnswerCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:AnswerReuseId];     rightTable.separatorStyle = UITableViewCellSeparatorStyleNone;     [self.view addSubview:rightTable]; 复制代码
  • 接下来我们实现切换:
-(void)indexDidChangeForSegmentedControl:(UISegmentedControl *)sender {
//我定义了一个 NSInteger tag,是为了记录我当前选择的是分段控件的左边还是右边。     NSInteger selecIndex = sender.selectedSegmentIndex;     switch(selecIndex){
            case 0:             leftTable.hidden = NO;             rightTable.hidden = YES;             sender.selectedSegmentIndex=0;             tag = 0;             [leftTable reloadData];             break;                          case 1:             leftTable.hidden = YES;             rightTable.hidden = NO;             sender.selectedSegmentIndex = 1;             tag=1;             [rightTable reloadData];             break;                          default:             break;      } } 复制代码
接下来实现UITableView的代理和数据源 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        if(tag==0){
        return array.count;     }     else if (tag==1){
        return array.count;     }     return 0; } 复制代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
         if(tag == 0){
                 AnswerCell *cell = [leftTable dequeueReusableCellWithIdentifier:AnswerReuseId ];         if (!cell) {
            cell = (AnswerCell *)[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier: AnswerReuseId];         }         //cell.model = array[indexPath.row];         cell.content.text = array[indexPath.row];         cell.userImg.image = [UIImage imageNamed:@"tabbar_home_selected@2x"];         cell.userName.text = @"一个演员的自我修养";         cell.title.text = @"演员的自我修养";         cell.time.text = @"4小时前";         cell.star.text  = @"1344";         cell.counts.text = @"445";         // 获取不确定文字的高度         NSString *str = array[indexPath.row];         CGFloat testHeight = [self sizeWithFont:[UIFont systemFontOfSize:14.0] maxW:cell.frame.size.width withContent:str] + 10;                  // 重新设置cell的frame.         CGRect frame = cell.frame;         frame.size.height = testHeight + self.originCellMaxY;         cell.frame = frame;         return cell;     }     else if (tag==1){
        AnswerCell *cell = [rightTable dequeueReusableCellWithIdentifier:AnswerReuseId ];         if (!cell) {
            cell = (AnswerCell *)[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier: AnswerReuseId];         }         //cell.model = array[indexPath.row];         cell.content.text = array[indexPath.row];         cell.userImg.image = [UIImage imageNamed:@"tabbar_home_selected@2x"];         cell.userName.text = @"一个演员的自我修养";         cell.title.text = @"演员的自我修养";         cell.time.text = @"4小时前";         cell.star.text  = @"1344";         cell.counts.text = @"445";         // 获取不确定文字的高度         NSString *str = array[indexPath.row];         CGFloat testHeight = [self sizeWithFont:[UIFont systemFontOfSize:14.0] maxW:cell.frame.size.width withContent:str] + 10;                  // 重新设置cell的frame.         CGRect frame = cell.frame;         frame.size.height = testHeight + self.originCellMaxY;         cell.frame = frame;         return cell;     }          return nil;      } 复制代码

效果图是这样的:

对了说一下,每个单元格之间那段距离 我是在自定义的cell中放了一个高度为10的UIView。哈哈 复制代码

就是这个样子:

转载于:https://juejin.im/post/5a30f70b6fb9a045132ab16e

你可能感兴趣的文章
element UI 的学习一,路由跳转
查看>>
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
查看>>
Spring JavaBean属性值的注入方式( 属性注入, 特殊字符注入 <![CDATA[ 带有特殊字符的值 ]]> , 构造器注入 )...
查看>>
【Linux】Linux下统计当前文件夹下的文件个数、目录个数
查看>>
Hibernate_14_数据连接池的使用
查看>>
Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)
查看>>
jacky自问自答-java并发编程
查看>>
Struts2+JSON数据
查看>>
zTree实现单独选中根节点中第一个节点
查看>>
Cocos2D-x设计模式发掘之中的一个:单例模式
查看>>
很强大的HTML+CSS+JS面试题(附带答案)
查看>>
用树莓派实现RGB LED的颜色控制——C语言版本号
查看>>
VC2012编译CEF3-转
查看>>
java 自己定义异常,记录日志简单说明!留着以后真接复制
查看>>
Android 使用AIDL实现进程间的通信
查看>>
机器学习(Machine Learning)&深度学习(Deep Learning)资料
查看>>
jquery的图片轮播 模板类型
查看>>
C# 获取文件名及扩展名
查看>>
Web安全学习计划
查看>>
输出有序数组的连续序列范围
查看>>