標籤:
UINavigationController&UITabBarController詳解
一:UINavigationController
控制器的屬性:
UINavigationController以棧的形式儲存子控制器
- @property(nonatomic,copy) NSArray *viewControllers;
- @property(nonatomic,readonly) NSArray *childViewControllers;
導航控制器之間的跳轉:
使用push方法能將某個控制器壓入棧
- - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
使用pop方法可以移除控制器
將棧頂的控制器移除
- - (UIViewController *)popViewControllerAnimated:(BOOL)animated;
回到指定的子控制器
- - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
回到根控制器(棧底控制器)
- - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
常用控制器(導航)屬性設定
導覽列的內容由棧頂控制器的navigationItem屬性決定
UINavigationItem有以下屬性影響著導覽列的內容
左上方的返回按鈕
- @property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
中間的標題視圖
- @property(nonatomic,retain) UIView *titleView;
中間的標題文字
- @property(nonatomic,copy) NSString *title;
左上方的視圖
- @property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem 右上方的視圖
- @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
Segue的屬性(Storyboard上每一根用來介面跳轉的線,都是一個UIStoryboardSegue對象(簡稱Segue))
根據Segue的執行(跳轉)時刻,Segue可以分為2大類型
- 自動型:點擊某個控制項後(比如按鈕),自動執行Segue,自動完成介面跳轉
- 手動型:需要通過寫代碼手動執行Segue,才能完成介面跳轉
Segue屬性
- 唯一標識
- @property (nonatomic, readonly) NSString *identifier;
- 來源控制器
- @property (nonatomic, readonly) id sourceViewController;
- 目標控制器
- @property (nonatomic, readonly) id destinationViewController;
Segue方法
- [self performSegueWithIdentifier:@"login2contacts" sender:nil];
- // Segue必須由來源控制器來執行,也就是說,這個perform方法必須由來源控制器來調用
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;
- [self performSegueWithIdentifier:@“login2contacts” sender:@“jack”];
二:UITabBarController
UITabBarController的使用步驟
- 初始化UITabBarController
- 設定UIWindow的rootViewController為UITabBarController
- 根據具體情況,通過addChildViewController方法添加對應個數的子控制器
UITabBarController添加控制器的方式有2種
添加單個子控制器
- - (void)addChildViewController:(UIViewController *)childController;
設定子控制器數組
- @property(nonatomic,copy) NSArray *viewControllers;
注意:UITabBarButton裡面顯示什麼內容,由對應子控制器的tabBarItem屬性決定
UITabBarItem有以下屬性影響著UITabBarButton的內容
- 標題文字
- @property(nonatomic,copy) NSString *title;
- 表徵圖
- @property(nonatomic,retain) UIImage *image;
- 選中時的表徵圖
- @property(nonatomic,retain) UIImage *selectedImage;
- 提醒數字
- @property(nonatomic,copy) NSString *badgeValue;
控制器的展示方式(開發中很重要)
以Modal的形式展示控制器
- - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
關閉當初Modal出來的控制器
- - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;
三:UINavigationController&UITabBarController使用實戰:
本文只是簡單的介紹關於UINavigationController喝UITabBarController的一些常用屬性方法和提示,關於基本使用和實戰篇,請看後面的文章,後面我將結合著兩個控制器應用到實際開發中去實現目前iOS開發的主流架構:
其實就是相當於我們項目開發中的App環境的搭建
環境搭建之玩轉UINavigationController與UITabBarController
環境搭建之純程式碼:http://www.cnblogs.com/iCocos/p/4690677.html
環境搭建之Xib:http://www.cnblogs.com/iCocos/p/4690714.html
環境搭建之StoryBoard:http://www.cnblogs.com/iCocos/p/4690659.html
iOS開發——控制器OC篇&UINavigationController&UITabBarController詳解