iOS开发之UISegmentedControl实现分页切换

在我们做应用开发的时候,难免会需要那种切换的效果,如果直接下载三方库,可能你没有自己写的理解的那么透彻,所以这里我介绍一下如何用UISegmentedControl进行切换。

有三个view,分别为view1view2view3,通过UISegmentedControl进行三个view的切换。


  • @interface UIViewDemoViewController : UIViewController { 
  • IBOutlet UIView *view1; 
  • IBOutlet UIView *view2; 
  • IBOutlet UIView *view3; 
  • - (IBAction)switchViews:(id)sender; 
  • @end 
  • @interface UIViewDemoViewController : UIViewController {
  • IBOutlet UIView *view1;
  • IBOutlet UIView *view2;
  • IBOutlet UIView *view3;
  • }
  • - (IBAction)switchViews:(id)sender;
  • @end


Interface Builder中分别建立三个view,关联到各自的输出口,每个view上的UISegmentedControl关联到switchViews:操作。


  • - (void)viewDidLoad { 
  • [super viewDidLoad]; 
  • [self.view addSubview:view1]; 
  • [self.view addSubview:view2]; 
  • [self.view addSubview:view3]; 
  • - (IBAction)switchViews:(id)sender{ 
  • UISegmentedControl *segmentedControl = sender; 
  • [[NSNotificationCenter defaultCenter] postNotificationName:@"switchViews" object:[NSNumber numberWithInteger:[segmentedControl selectedSegmentIndex]]]; 
  • - (void)viewDidLoad {
  • [super viewDidLoad];
  • [self.view addSubview:view1];
  • [self.view addSubview:view2];
  • [self.view addSubview:view3];
  • }
  • - (IBAction)switchViews:(id)sender{
  • UISegmentedControl *segmentedControl = sender;
  • [[NSNotificationCenter defaultCenter] postNotificationName:@"switchViews" object:[NSNumber numberWithInteger:[segmentedControl selectedSegmentIndex]]];
  • }


接着,为UISegmentedControl控件建立一个处理类。

  • @interface SegmentedControl : UISegmentedControl { 
  • IBOutlet UIView *view1; 
  • IBOutlet UIView *view2; 
  • IBOutlet UIView *view3; 
  • IBOutlet UIViewDemoViewController* viewController; 
  • @end 
  • @interface SegmentedControl : UISegmentedControl {
  • IBOutlet UIView *view1;
  • IBOutlet UIView *view2;
  • IBOutlet UIView *view3;
  • IBOutlet UIViewDemoViewController* viewController;
  • }
  • @end


UISegmentedControl控件的Class改为刚创建的处理类:SegmentedControl,然后,UISegmentedControl控件关联到四个输出口:view分别关联到刚创建的三个view上,viewController关联到File's Owner上。


  • - (void)awakeFromNib{ 
  • [[NSNotificationCenter defaultCenter] addObserver:self 
  • selector:@selector(switchViews:) 
  • name:@"switchViews" 
  • object:nil]; 
  • - (void)switchViews:(NSNotification*)notification{ 
  • NSNumber *viewNumber = [notification object]; 
  • NSInteger i = [viewNumber integerValue]; 
  • [self setSelectedSegmentIndex:i]; 
  • UIView *chosenView = nil; 
  • switch (i) { 
  • case 0: 
  • chosenView = view1; 
  • break; 
  • case 1: 
  • chosenView = view2; 
  • break; 
  • case 2: 
  • chosenView = view3; 
  • break; 
  • default: 
  • break; 
  • if (chosenView) { 
  • [[viewController view] bringSubviewToFront:chosenView]; 
  • - (void)dealloc{ 
  • [super dealloc]; 
  • [[NSNotificationCenter defaultCenter] removeObserver:self]; 
  • - (void)awakeFromNib{
  • [[NSNotificationCenter defaultCenter] addObserver:self
  • selector:@selector(switchViews:)
  • name:@"switchViews"
  • object:nil];
  • }
  • - (void)switchViews:(NSNotification*)notification{
  • NSNumber *viewNumber = [notification object];
  • NSInteger i = [viewNumber integerValue]; 
  • [self setSelectedSegmentIndex:i];
  • UIView *chosenView = nil;
  • switch (i) {
  • case 0:
  • chosenView = view1;
  • break;
  • case 1:
  • chosenView = view2;
  • break;
  • case 2:
  • chosenView = view3;
  • break;
  • default:
  • break;
  • }
  • if (chosenView) {
  • [[viewController view] bringSubviewToFront:chosenView];
  • }
  • }
  • - (void)dealloc{
  • [super dealloc];
  • [[NSNotificationCenter defaultCenter] removeObserver:self];
  • }
  • 如果有问题,请大家指正交流,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值