JSRUN 用代码说话

CANavigationController(导航控制器)

编辑教程

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

类型:bool

解释:导航栏隐藏。is{}。

TouchMoved

类型: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

参数:

解释:到下边界

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟