首页 > 代码库 > [转]IOS Segment页面之间view的切换

[转]IOS Segment页面之间view的切换

有三个view,分别为view1、view2、view3,通过UISegmentedControl进行三个view的切换。

 

Ios代码  收藏代码
  1. @interface UIViewDemoViewController : UIViewController {  
  2.     IBOutlet UIView *view1;  
  3.     IBOutlet UIView *view2;  
  4.     IBOutlet UIView *view3;  
  5. }  
  6.   
  7. - (IBAction)switchViews:(id)sender;  
  8. @end  

 

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

 

Ios代码  收藏代码
  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3.     [self.view addSubview:view1];  
  4.     [self.view addSubview:view2];  
  5.     [self.view addSubview:view3];  
  6. }  
  7.   
  8. - (IBAction)switchViews:(id)sender{  
  9.     UISegmentedControl *segmentedControl = sender;  
  10.     [[NSNotificationCenter defaultCenter] postNotificationName:@"switchViews" object:[NSNumber numberWithInteger:[segmentedControl selectedSegmentIndex]]];  
  11. }  

 

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

 

 

Ios代码  收藏代码
  1. @interface SegmentedControl : UISegmentedControl {  
  2.     IBOutlet UIView *view1;  
  3.     IBOutlet UIView *view2;  
  4.     IBOutlet UIView *view3;  
  5.     IBOutlet UIViewDemoViewController* viewController;  
  6. }  
  7.   
  8. @end  

 

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

 

Ios代码  收藏代码
  1. - (void)awakeFromNib{  
  2.     [[NSNotificationCenter defaultCenter] addObserver:self  
  3.                                              selector:@selector(switchViews:)  
  4.                                                  name:@"switchViews"  
  5.                                                object:nil];  
  6. }  
  7.   
  8. - (void)switchViews:(NSNotification*)notification{  
  9.     NSNumber *viewNumber = [notification object];  
  10.     NSInteger i = [viewNumber integerValue];      
  11.     [self setSelectedSegmentIndex:i];  
  12.     UIView *chosenView = nil;  
  13.     switch (i) {  
  14.         case 0:  
  15.             chosenView = view1;  
  16.             break;  
  17.         case 1:  
  18.             chosenView = view2;  
  19.             break;  
  20.         case 2:  
  21.             chosenView = view3;  
  22.             break;  
  23.         default:  
  24.             break;  
  25.     }  
  26.     if (chosenView) {  
  27.         [[viewController view] bringSubviewToFront:chosenView];  
  28.     }  
  29. }  
  30.   
  31. - (void)dealloc{  
  32.     [super dealloc];  
  33.     [[NSNotificationCenter defaultCenter] removeObserver:self];  
  34. }  

 

代码可以到视图切换的动画效果进行下载。