CANavigationController(導航控制器)

2018-09-08 16:21 更新

類說明

CANavigationController是CAViewController的子類,它的作用是管理多個CAViewController,我們要明白的是CANavigationController是使用堆棧的方式管理的,即我們每往CANavigationController添加一個CAViewController,則進行一次堆棧的操作,每次移除則進行一次出棧操作。


基類

CAViewController, CANavigationBarDelegate


CANavigationController 屬性(點擊查看方法介紹)

屬性說明
NavigationBarHidden導航欄隱藏
TouchMoved觸摸移動
NavigationBarBackGroundImage導航欄背面圖像
NavigationBarBackGroundColor導航欄背面顏色
NavigationBarTitleColor導航欄標題顏色
NavigationBarButtonColor導航欄按鈕顏色


CANavigationController 方法(點擊查看方法介紹)

方法
說明
initWithRootViewController使用CAViewController來初始化,這個是必須的
replaceViewController替換棧頂的viewController
pushViewController將新的viewController壓入棧頂
popViewControllerAnimated移除棧頂的viewController
popToRootViewControllerAnimated移除根的viewController
popFirstViewController移除第一個viewController
popViewControllerAtIndex根據索引值移除viewController
getViewControllerAtIndex根據索引值獲取viewController
getBackViewController返回最后一個ViewController
getViewControllerCount當前棧內viewController總數
setNavigationBarHidden是否隱藏navigationBar
updateItem更新navigationBarItem
ccTouchBegan觸摸事件開始時的回調函數
ccTouchMoved觸摸事件中觸點移動時的回調函數
ccTouchEnded觸摸事件結束時的回調函數
ccTouchCancelled觸摸非正常結束(例如:電話或鎖屏)
isReachBoundaryLeft到左邊界
isReachBoundaryRight到右邊界
isReachBoundaryUp到上邊界
isReachBoundaryDown到下邊界



創(chuàng)建與初始化

bool RootWindow::init()
{
    if (!CAWindow::init())
    {
        return false;
    }
     
    //創(chuàng)建Navigation
    CANavigationController* _viewController = new CANavigationController();
    
    //創(chuàng)建Navigation的第一個Controller
    FirstViewController* first = new FirstViewController();
      first->init();
     
    //使用一個controller初始化Navigation(必須)
    _viewController->initWithRootViewController(first);
     
    //RootWindow加載Navigation
    this->setRootViewController(_viewController);
    
    //釋放內存
    first->release();
    
    //釋放內存
    _viewController->release();
    return true;
}

樣式屬性

可控制樣式:barItem位置、標題、左按鈕、右按鈕

bool RootWindow::init()
{
    if (!CAWindow::init())
    {
        return false;
    }
     
    //創(chuàng)建Navigation
    CANavigationController* _viewController = new CANavigationController();
     
    //創(chuàng)建Navigation的第一個Controller
    FirstViewController* first = new FirstViewController();
      first->init();
     
    //創(chuàng)建CANavigationBarItem并設置顯示標題
    CANavigationBarItem* nItem = CANavigationBarItem::create("First");
     
    //創(chuàng)建左邊按鈕(右邊按鈕同理)
    CABarButtonItem* leftBtn = CABarButtonItem::create("", CAImage::create("source_material/btn_left_white.png"), CAImage::create("source_material/btn_left_blue.png"));
    
    //將leftBtn添加到CANavigationBarItem
    nItem->addLeftButtonItem(leftBtn);
     
    //將CANavigationBarItem添加到FirstViewController
    first->setNavigationBarItem(nItem);
     
    //使用一個controller初始化Navigation(必須)
    //CABarVerticalAlignmentBottom顯示在底部
    _viewController->initWithRootViewController(first,CABarVerticalAlignmentBottom);
    
    //RootWindow加載Navigation
    this->setRootViewController(_viewController);
    
    //釋放內存
    first->release();
    
    //釋放內存
    _viewController->release();
    return true;
}



主要了解:CABarButtonItem這個類的樣式

//根據title創(chuàng)建CANavigationBarItem
static CANavigationBarItem* create(const std::string& title);
 
//添加左邊按鈕
void addLeftButtonItem(CABarButtonItem* item);
 
//添加郵編按鈕
void addRightButtonItem(CABarButtonItem* item);

管理

初始化

virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);

替換

virtual void replaceViewController(CAViewController* viewController, bool animated);

增加

virtual void pushViewController(CAViewController* viewController, bool animated);

移除

  /*
    *移除棧頂的viewController
    *animated:是否播放動畫
    */
    CAViewController* popViewControllerAnimated(bool animated);
     
    /*
    *移除根的viewController
    *animated:是否播放動畫
    */
    void popToRootViewControllerAnimated(bool animated);
     
    /*
    *移除第一個viewController
    *animated:是否播放動畫
    */
    CAViewController* popFirstViewController();
     
    /*
    *根據索引值移除viewController
    *animated:是否播放動畫
    */
    CAViewController* popViewControllerAtIndex(int index);


CANavigationController 屬性

NavigationBarHidden

類型:bool

解釋:導航欄隱藏。is{}。


 TouchMoved

類型:bool

解釋:觸摸移動。is/set{}。    


NavigationBarBackGroundImage

類型:CAImage*,

解釋:導航欄背面圖像。set/get{}。


NavigationBarBackGroundColor

類型:CAColor4B

解釋:導航欄背面顏色。set/get{}。


NavigationBarTitleColor

類型:CAColor4B

解釋:導航欄標題顏色。set/get{}。


NavigationBarButtonColor

類型:CAColor4B

解釋:導航欄按鈕顏色。set/get{}。


CANavigationController 方法

virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);

返回值:bool

參數:

類型參數名說明
CAViewController*viewController初始化CAViewController
CABarVerticalAlignmentvar = CABarVerticalAlignmentTopCANavigationBar的現(xiàn)實樣式

解釋:使用CAViewController來初始化,這個是必須的

                                      

virtual void replaceViewController(CAViewController* viewController, bool animated);

返回值:void

參數:

類型參數名說明
CAViewController*viewController新的viewController
boolanimated是否播放動畫

解釋:替換棧頂的viewController


      

virtual void pushViewController(CAViewController* viewController, bool animated);

返回值:void

參數:

類型參數名說明
CAViewController*viewController新的viewController
boolanimated是否播放動畫

解釋:將新的viewController壓入棧頂


CAViewController* popViewControllerAnimated(bool animated);

返回值:CAViewController*

參數:

類型參數名說明
boolanimated是否播放動畫

解釋:移除棧頂的viewController


void popToRootViewControllerAnimated(bool animated);

返回值:void

參數:

類型參數名說明
boolanimated是否播放動畫

解釋:移除根的viewController


CAViewController* popFirstViewController();

返回值:CAViewController*

參數:

解釋:移除第一個viewController


CAViewController* popViewControllerAtIndex(int index);

返回值:CAViewController*

參數:

類型參數名說明
intindex移除第幾個viewController

解釋:根據索引值移除viewController


CAViewController* getViewControllerAtIndex(int index);

返回值:CAViewController*

參數:

類型參數名說明
intindex獲取第幾個viewController

解釋:根據索引值獲取viewController


CAViewController* getBackViewController();

返回值:CAViewController*

參數:

解釋:返回最后一個ViewController


inline unsigned long getViewControllerCount() ;

返回值:unsigned long

參數:

解釋:當前棧內viewController總數


virtual void setNavigationBarHidden(bool hidden, bool animated);

返回值:void

參數:

類型參數名說明
boolhidden隱藏navigationBar
boolanimated是否播放動畫

解釋:是否隱藏navigationBar


void updateItem(CAViewController* viewController);

返回值:void

參數:

類型參數名說明
CAViewController*viewController更新navigationBarItem

解釋:更新navigationBarItem


virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);

返回值:bool

參數:

類型參數名說明
CATouch*pTouch觸摸傳遞對象
CAEvent*pEvent此參數待定

解釋:觸摸事件開始時的回調函數

   

virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);

返回值:void

參數:

類型參數名說明
CATouch*pTouch觸摸傳遞對象
CAEvent*pEvent此參數待定

解釋:觸摸事件中觸點移動時的回調函數

  

virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);

返回值:void

參數:

類型參數名說明
CATouch*pTouch觸摸傳遞對象
CAEvent*pEvent此參數待定

解釋:觸摸事件結束時的回調函數


virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);

返回值:void

參數:

類型參數名說明
CATouch*pTouch觸摸傳遞對象
CAEvent*pEvent此參數待定

解釋:觸摸非正常結束時的回調函數。(例如:電話或鎖屏)


virtual bool isReachBoundaryLeft();

返回值:virtual bool

參數:

解釋:到左邊界


virtual bool isReachBoundaryRight();

返回值:virtual bool

參數:

解釋:到右邊界


virtual bool isReachBoundaryUp();

返回值:virtual bool

參數:

解釋:到上邊界


virtual bool isReachBoundaryDown();

返回值:virtual bool

參數:

解釋:到下邊界



以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號