問題:objective-c
你想要容許你的用戶在視圖之間來回切換app
解決方法:ide
使用UINavigationController動畫
討論:atom
選擇Empty Application取什麼名字你隨意,而後選擇菜單文件選擇New->New File...選擇第一個objective-c Class這個文件,命名爲FirstViewController,繼承自UINavigationController。spa
基本文件搞定,而後咱們開始,找到APP的代理文件 AppDelegate.m文件,而後寫下以下代碼:.net
#import 「AppDelegate.h」代理
#import 「FirstViewController.h」orm
@interface AppDelegate ()對象
@property(nonatiomic,strong) UINavigationController *navigationController;
@implementation AppDelegate
…
如今咱們要使用 initWithRootViewController : 方法初始化導航欄,而且傳遞咱們的參數。而後導航欄就做爲根視圖出如今窗口上。這裏千萬不要混淆,UINavigationController是UIViewController的子類,這裏的RootViewController能夠是任何對象,因此咱們但願咱們的根視圖控制器是一個導航控制器,就只需設置導航控制器爲根視圖控制器。 那麼開始動手寫代碼
- (BOOL) application:(UIApplication *)application didFinishLauchingWithOptions: (NSDictionary *) lauchOptions
{
FirstViewController *viewController = [[FirstViewController alloc ] initWithName:nil bundle:nil];
self.navigationController = [[UINavigationController alloc ] initWithRootViewController:viewController];
self.window = [[UIWindow alloc] initWithName: [UIScreen mainScreen] bounds];
self.window.rootViewController = self.navigationController;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
如今在模擬器中運行這個應用看: 應該出現這個圖片:
圖:1-33 顯示導航欄控制器
可能會注意到導航欄顯示「First Controller」,這難道是新的部件?並非,這也是導航條,咱們會在不少的導航中使用到那個bar,這裏的bar顯示的是一個文本,每一個視圖控制器指定了一個標題自己,一旦視圖控制器被壓入堆棧,導航控制器就會自動顯示這個文本!
找到咱們的根視圖控制器的實現穩健,在ViewDidLoad方法裏面,設置標題而且添加按鈕,當用用戶按下這個按鈕,就會跳到第二個視圖控制器! (仍是在AppDelegate.m文件裏,而後代碼以下:)
#import 「FirstController.h」
#import 「SecondController.h」
@interface FirstViewController ()
@property (nonatomic, strong) UIButton *displaySecondViewController;
@implemetation FirstViewController
- (void) performDisplaySecondViewController: (id)parmamSender
{
SecondViewController *secondController = [[SecondViewController alloc] initWithName:nil bundle:YES];
[self.navigationContoller pushViewContoller : secondController animated: YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @「First Controller」;
self.displaySecondViewController = [UIButton buttonWithType:UIButtonTypeSystem];
[self.displaySecondViewController setTitle:@「Display Second View Controller」 forState:UIControlStateNormal];
[self.displaySecondViewController sizeToFit];
self.displaySecondViewController.center = self.view.center;
[self.displaySecondViewController addTarget:self action:@selector (performDIsplaySecondViewController:) forControlEvents: UIControlEventTouchUpInside];
[self.view.addSubBiew: self.displaySecondViewController];
}
如今建立第二個視圖控制器,命名爲SecondViewController,(就像建立FIrstViewController同樣建立SecondViewController)既然建立了,那咱們就給他一個標題
#import 「SecondViewController.h」
@implementation SecondViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @「Second Controller」;
}
兩個視圖都建立好了,接下來要作的就是實現從第一個視圖跳轉到第二個試圖。使用popViewControllerAnimate:方法,取布爾做爲參數。若是布爾值設置爲YES ,就會在轉到下一個視圖控制器的時候會有動畫效果,若是NO則反之。當顯示屏幕上的第二個視圖控制器,你會看到相似於圖1-34所示的東西。
圖:1-34
#import 「SecondViewController」
@implementation SecondViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @「Second Controller」;
}
- (void)goBack
{
[self.navigationController popViewControllerAnimates:YES];
}
- (void) viewDidAppear:(BOOL)paramAnimated
{
[super viewDidAppear : paramAnimated];
[self performSelector: @selector(goBack) withObject:nil afterDelay:5.0f];
}
經過以上代碼咱們就完成了咱們的需求了!