类说明
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 | 到下边界 | 
创建与初始化
bool RootWindow::init()
{
    if (!CAWindow::init())
    {
        return false;
    }
     
    //创建Navigation
    CANavigationController* _viewController = new CANavigationController();
    
    //创建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;
    }
     
    //创建Navigation
    CANavigationController* _viewController = new CANavigationController();
     
    //创建Navigation的第一个Controller
    FirstViewController* first = new FirstViewController();
      first->init();
     
    //创建CANavigationBarItem并设置显示标题
    CANavigationBarItem* nItem = CANavigationBarItem::create("First");
     
    //创建左边按钮(右边按钮同理)
    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创建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 属性
类型:bool
解释:导航栏隐藏。is{}。
类型:bool
解释:触摸移动。is/set{}。
类型:CAImage*,
解释:导航栏背面图像。set/get{}。
类型:CAColor4B
解释:导航栏背面颜色。set/get{}。
类型:CAColor4B
解释:导航栏标题颜色。set/get{}。
类型:CAColor4B
解释:导航栏按钮颜色。set/get{}。
CANavigationController 方法
virtual bool initWithRootViewController(CAViewController* viewController,CABarVerticalAlignment var = CABarVerticalAlignmentTop);
返回值:bool
参数:
| 类型 | 参数名 | 说明 | 
| CAViewController* | viewController | 初始化CAViewController | 
| CABarVerticalAlignment | var = CABarVerticalAlignmentTop | CANavigationBar的现实样式 | 
解释:使用CAViewController来初始化,这个是必须的
                                      
virtual void replaceViewController(CAViewController* viewController, bool animated);
返回值:void
参数:
| 类型 | 参数名 | 说明 | 
| CAViewController* | viewController | 新的viewController | 
| bool | animated | 是否播放动画 | 
解释:替换栈顶的viewController
virtual void pushViewController(CAViewController* viewController, bool animated);
返回值:void
参数:
| 类型 | 参数名 | 说明 | 
| CAViewController* | viewController | 新的viewController | 
| bool | animated | 是否播放动画 | 
解释:将新的viewController压入栈顶
CAViewController* popViewControllerAnimated(bool animated);
返回值:CAViewController*
参数:
| 类型 | 参数名 | 说明 | 
| bool | animated | 是否播放动画 | 
解释:移除栈顶的viewController
void popToRootViewControllerAnimated(bool animated);
返回值:void
参数:
| 类型 | 参数名 | 说明 | 
| bool | animated | 是否播放动画 | 
解释:移除根的viewController
CAViewController* popFirstViewController();
返回值:CAViewController*
参数:
解释:移除第一个viewController
CAViewController* popViewControllerAtIndex(int index);
返回值:CAViewController*
参数:
| 类型 | 参数名 | 说明 | 
| int | index | 移除第几个viewController | 
解释:根据索引值移除viewController
CAViewController* getViewControllerAtIndex(int index);
返回值:CAViewController*
参数:
| 类型 | 参数名 | 说明 | 
| int | index | 获取第几个viewController | 
解释:根据索引值获取viewController
CAViewController* getBackViewController();
返回值:CAViewController*
参数:
解释:返回最后一个ViewController
inline unsigned long getViewControllerCount() ;
返回值:unsigned long
参数:
解释:当前栈内viewController总数
virtual void setNavigationBarHidden(bool hidden, bool animated);
返回值:void
参数:
| 类型 | 参数名 | 说明 | 
| bool | hidden | 隐藏navigationBar | 
| bool | animated | 是否播放动画 | 
解释:是否隐藏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
参数:
解释:到下边界