指定根视图:

    // 设置window的根视图控制器self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[RootViewController new]];

定义属性

#import "RootViewController.h"
#import "FirstViewController.h"
#import "SecondTableViewController.h"
@interface RootViewController ()<UIScrollViewDelegate>
@property (nonatomic, strong) UISegmentedControl *segmentedControl;
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) FirstViewController *firstVC;
@property (nonatomic, strong) SecondTableViewController *secondTVC;
@end@implementation RootViewController

创建实现:

- (void)viewDidLoad
{[super viewDidLoad];// 适应scrollViewself.automaticallyAdjustsScrollViewInsets = NO;self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second"]];self.navigationItem.titleView = self.segmentedControl;[self.segmentedControl addTarget:self action:@selector(segmentedControlAction:) forControlEvents:UIControlEventValueChanged];self.segmentedControl.selectedSegmentIndex = 0;// 创建scrollViewself.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64)];[self.view addSubview:self.scrollView];// 设置scrollView的内容self.scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 2, [UIScreen mainScreen].bounds.size.height - 64);self.scrollView.pagingEnabled = YES;self.scrollView.bounces = NO;// 创建控制器self.firstVC = [FirstViewController new];self.secondTVC = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain];// 添加为self的子控制器[self addChildViewController:self.firstVC];[self addChildViewController:self.secondTVC];self.firstVC.view.frame = CGRectMake(0, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));self.secondTVC.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width, 0, self.scrollView.frame.size.width, CGRectGetHeight(self.scrollView.frame));[self.scrollView addSubview:self.firstVC.view];[self.scrollView addSubview:self.secondTVC.view];// 设置scrollView的代理self.scrollView.delegate = self;
}

分段控制器点击方法

- (void)segmentedControlAction:(UISegmentedControl *)sender
{[self.scrollView setContentOffset:CGPointMake(sender.selectedSegmentIndex * self.scrollView.frame.size.width, 0) animated:NO];
}- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{NSInteger n = scrollView.contentOffset.x / scrollView.frame.size.width;self.segmentedControl.selectedSegmentIndex = n;
}

first/和second分别为UIViewController和UITableViewController只设颜色即可看效果(这里不做创建)

最终效果:

iOS开发者交流群:446310206

iOS中分段控制器与UIScrollView结合使用相关推荐

  1. iOS 中导航控制器全屏向右滑动返回上一界面

    在iOS中,导航控制器默认就自带了侧滑功能,当用户在界面的左边(左边边缘)滑动的时候,才会有侧滑功能.但是我们往往在开发的过程中需要在屏幕的任意位置滑动,都需要返回到上一个界面. 多说无意,直接看代码 ...

  2. iOS中单个控制器横屏切换的研究

    在项目中遇到了一个问题,app中有两个控制器要求可以切换横屏,研究了半天,终于找到了解决办法. 在AppDelegate中写 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  3. IOS 中视图控制器的生命周期

    1.init Allocating critical data structures required by your view controller 不要出现创建view的代码.良好的设计,在ini ...

  4. iOS中UINavigationController控制器使用详解

    一.概述 UINavigationController用来管理视图控制器,在多视图控制器中常用.它以栈的形式管理视图控制器,管理视图控制器个数理论上不受限制(实际受内存限制),push和pop方法来弹 ...

  5. iOS中视图控制器指定自定义UIView

    他的好处就是在程序执行viewDIdLoad之前可以把我们需要用的数据加载完成.这也是减轻控制器的负担之一的办法.但是我个人觉得好是每有数据的延迟加载的功能牛.延迟加载只在数据需要的时候才被加载到视图 ...

  6. iOS开发中标签控制器的使用——UITabBarController

    iOS开发中标签控制器的使用--UITabBarController 一.引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理 ...

  7. ios 销毁当前页面重新开启_问:如何强制销毁iOS中的视图控制器?

    是否可以在iOS中回收/强制销毁UIViewController?问:如何强制销毁iOS中的视图控制器? 我用这github project得到一个定制UIViewControllerTransiti ...

  8. ios中常用的第三方库

    下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableVie ...

  9. ios 中的小技巧 - 总有你想要的 一

    UITableView的Group样式下顶部空白处理 在viewWillAppear里面添加如下代码: //分组列表头部空白处理 CGRect frame = myTableView.tableHea ...

  10. iOS中常见的设计模式(MVC/单例/委托/观察者)

    关于设计模式这个问题,在网上也找过一些资料,下面是我自己总结的,分享给大家 如果你刚接触设计模式,我们有好消息告诉你!首先,多亏了Cocoa的构建方式,你已经使用了许多的设计模式以及被鼓励的最佳实践. ...

最新文章

  1. docred数据集情况笔记
  2. 从输入字段读取属性时,HTML编码丢失
  3. 在哪里能收到python实例代码-python实例代码
  4. 使用brew安装Logstash(Mac)
  5. IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
  6. 行为型模式:责任链模式
  7. dmg文件 linux,安装和使用Dmg2Img在Linux上创建macOS安装盘
  8. MySQL DATEDIFF(d1,d2) 计算日期 d1-d2 之间相隔的天数
  9. VTK:Animation用法实战
  10. 版是什么版本的教材_acca教材有哪些版本
  11. 用分布式缓存提升ASP.NET Core性能
  12. php中数组生成下拉选项,php利用数组填充下拉列表框
  13. python+OpenCV图像处理(一)读取、复制、显示、保存
  14. python copy
  15. 如何用范德蒙行列式完成插值
  16. Turtlebot2激光雷达(Rplidar)gmapping构建地图
  17. amazeui学习笔记--css(HTML元素1)--按钮Button
  18. FASTX-Toolkit
  19. SNIP的升级版SNIPER(效果比Mosaic更佳)
  20. C++20 barrier

热门文章

  1. pymysql executemany()函数
  2. 基本数据类型及其对应的包装类
  3. 罗马仕php30重量,认真测评 篇三:罗马仕sence8P+两年使用报告
  4. 电脑已安装软件提取安装包_SPSS 24,软件安装包及安装教程
  5. 单片机c语言中void key(void),单片机C语言编程
  6. matlab解六元一次方程,如何用MATLAB编写六元一次方程组
  7. mysql根据不同的值查询不同的字段_sql根据一个字段不同值查询不同表中的一个字段...
  8. Spring属性编辑器解读(转载)
  9. jquery.treeview.js
  10. 八段锦是一种不错的养生运动