標籤:blog http java os width art
有三個view,分別為view1、view2、view3,通過UISegmentedControl進行三個view的切換。
Ios代碼
- @interface UIViewDemoViewController : UIViewController {
- IBOutlet UIView *view1;
- IBOutlet UIView *view2;
- IBOutlet UIView *view3;
- }
-
- - (IBAction)switchViews:(id)sender;
- @end
在Interface Builder中分別建立三個view,關聯到各自的輸出口,每個view上的UISegmentedControl關聯到switchViews:操作。
Ios代碼
- - (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控制項建立一個處理類。
Ios代碼
- @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上。
Ios代碼
- - (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];
- }
代碼可以到視圖切換的動畫效果進行下載。