ios開發:怎麼實現點選一個按鈕,跳轉到一個新的介面,並回退到上一介面
阿新 • • 發佈:2019-01-08
iOS三種檢視切換的原理各不相同:
UITabBarController:以平行的方式管理檢視,各個檢視之間往往關係並不大,每個加入到UITabBarController的檢視都會進行初始化即使當前不顯示在介面上,相對比較佔用記憶體。
UINavigationController:以棧的方式管理檢視,各個檢視的切換就是壓棧和出棧操作,出棧後的檢視會立即銷燬。
UIModalController:以模態視窗的形式管理檢視,當前檢視關閉前其他檢視上的內容無法操作。
1.可以使用導航控制器棧。
微博專案中就是用到這種方法
將當前檢視控制器作為rootViewController.需要在建立當前控制器的程式碼中這樣來建立 UIViewController *vc1=[[UIViewControlelr alloc] init]; UINavigationController *navController =[[UINavigationController alloc] initWithRootViewController:vc1]; [vc1 release]; [window addSubView:navController.view]; [navController release]; 只有噹噹前控制器在導航控制器棧中才可以使用pushViewController來導航其它檢視 導航到新的檢視控制器: UIViewController *vc2=[[ViewController alloc] init]; [self.navigationController pushViewController:vc2 animated:YES]; [vc2 release];
當返回上一介面時,可以參考微博介面的返回;
2.模態檢視
UIViewController *vc2=[[ViewController alloc] init]; [self presentModalViewController:controller animated:YES];
退出參考WFCoreText
[selfdismissViewControllerAnimated:YEScompletion:NULL];
3.使用新的檢視覆蓋當前檢視 如果使用這種方式,建議建立一個可維護控制器之間互動的控制器swithController,在這個控制器中來實現不同控制器之間的檢視切換 @inertface SwitchViewController:UIViewController @property(retain) UIViewController *vc1 @property (retain) UIViewController *vc2; -(void)showVC1; -(void)showVC2; @end @implementation SwitchViewController @synthesize vc1,vc2; -(void)showVC1 { if (vc2) { [vc2.view removeFromSuperView]; } [self.view addSubView:vc1.view]; } @end