Categories: CrossApp 教程

CANavigationController(导航控制器)

类说明

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 属性

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
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

参数:

解释:到下边界

admin

这个人很懒,什么都没有留下~

Share
Published by
admin

Recent Posts

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

6 小时 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

1 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

2 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

2 周 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

3 周 ago

聊聊React和Vue组件更新的实现及区别

React 和 Vue 都是当…

4 周 ago