JSRUN 用代码说话

CAViewController(视图控制器)

编辑教程

CAViewController(视图控制器)

类说明

CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制视图及CAViewController之间的通信与协调。CAViewController是所有CrossApp中Controller的基类。

基类

CAContentContainer, CAKeypadDelegate

CAViewController 属性

属性 方法
Title 标题
NavigationController 获取NavigationController
NavigationBarItem 获取NavigationBarItem
TabBarController 获取TabBarController
TabBarItem 获取TabBarItem

CAViewController 方法

方法 说明
init 初始化
getNibName 返回类型的名称
isViewRunning 当前View是否再运行
setNavigationBarItem 设置CANavigationBarItem属性
setTabBarItem 设置CATabBarItem属性
presentModalViewController 弹出一个CAViewController
dismissModalViewController 移除CAViewController
isKeypadEnabled 设置监听物理返回键
setKeypadEnabled 设置监听物理返回键
getView 获取当前CAViewController的View根节点
nextResponder 获得下个监听者
ccTouchBegan 触摸事件开始时的回调函数
ccTouchMoved 触摸事件中触点移动时的回调函数
ccTouchEnded 触摸事件结束时的回调函数
ccTouchCancelled 触摸非正常结束时的回调函数。(例如:电话或锁屏)
viewDidLoad 当前控制器的view被加载完毕后调用
viewDidUnload 当前控制器的view被移除掉时调用
viewDidAppear 显示时被调用
viewDidDisappear 隐藏时被调用
reshapeViewRectDidFinish 当前view被修改大小时被自动调用
keyBackClicked back键响应函数(android平台)
keyMenuClicked menu键响应函数(android平台)
addViewFromSuperview 将自己添加到根节点View
removeViewFromSuperview 将自己从根节View点移除

生命周期

viewDidLoad() //第一次被加载时调用(仅有一次会被调用)

viewDidAppear() //显示时被调用(例如TableController切换到显示)

viewDidDisappear() //隐藏时被调用(例如TableController切换到其他Controller

viewDidUnload() //移除时被调用(仅有一次会被调用)

注意:

Window直接加载的CAViewController显示时不会调用viewDidAppear()函数

CAViewController之间的管理

切换

如果CAViewController是直接被CAWindow所加载的,那么它就可以直接使用presentModalViewController(CAViewController* controller, bool animated);来跳转到新的CAViewController,或通过dismissModalViewController(bool animated);对当前的CAViewController关闭。

嵌套

CAViewController是可以相互嵌套管理的,例如CATableController可以管理多个其他的CAViewController.

例如:

bool RootWindow::init()
{
    if (!CAWindow::init())
    {
        return false;
    }

    CAViewController* controller1 = new CAViewController();
    CAViewController* controller2 = new CAViewController();
    CAViewController* controller3 = new CAViewController();
    CAViewController* controller4 = new CAViewController();

    CAVector<CAViewController*> vec;
    vec.pushBack(controller1);
    vec.pushBack(controller2);
    vec.pushBack(controller3);
    vec.pushBack(controller4);

    //创建一个CATabBarController
    CATabBarController* tabBarController = new CATabBarController();

    //将CAVector<CAViewController*>添加到CATabBarController
    tabBarController->initWithViewControllers(vec);

    //将tabBarController添加到当前的Window
    this->setRootViewController(tabBarController);

    //释放内存
    controller1->release();
    controller2->release();
    controller3->release();
    controller4->release();
    tabBarController->release();
}

这样就使用CATabBarController来管理CAViewController的显示与隐藏了

CAView的管理

一般我们会把逻辑代码写到viewDidLoad()方法中,我回把所要显示的CAView通过this->getView()->addSubview(CrossApp::CAView *child);添加到m_pView的子节点上。

例如:

void CopybookViewController::viewDidLoad()
{
    _winRect = this->getView()->getBounds();

    CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));
    imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);
    imageView->setFrame(_winRect);

    this->getView()->addSubview(imageView);
}

CAViewController 属性

Title

类型:std::string

解释:标题。set/get{}。

类型:CANavigationController*

解释:获取NavigationController属性。get{}。

类型:CANavigationBarItem*

解释:获取NavigationBarItem属性。get{}。

TabBarController

类型:CATabBarController*

解释:获取TabBarController。get{}。

TabBarItem

类型:CATabBarItem*

解释:获取TabBarItem。get{}。


CAViewController 方法

virtual bool init();

返回值:bool

参数:

解释:初始化,默认返回true,如果返回false则初始化失败

const char* getNibName();

返回值:const char*

参数:

解释:返回类型的名称

bool isViewRunning();

返回值:bool

参数:

解释:当前View是否再运行

void setNavigationBarItem(CANavigationBarItem* item);

返回值:void

参数:

类型 参数名 说明
CANavigationBarItem* item 项目

解释:设置CANavigationBarItem属性(只有被CANavigationController管理才会显示)

void setTabBarItem(CATabBarItem* item);

返回值:void

参数:

类型 参数名 说明
CANavigationBarItem* item 项目

解释:设置CATabBarItem属性(只有被CATableController管理才会显示)

void presentModalViewController(CAViewController* controller, bool animated);

返回值:void

参数:

类型 参数名 说明
CAViewController* controller 要弹出的CAViewController
bool animated 是否需要弹出动画

解释:弹出一个CAViewController

void dismissModalViewController(bool animated);

返回值:void

参数:

类型 参数名 说明
bool animated 是否需要动画

解释:移除CAViewController

virtual bool isKeypadEnabled();

返回值:virtual bool

参数:

解释:是否监听物理返回键(android的Back键或pc的Esc键)

virtual void setKeypadEnabled(bool value);

返回值:virtual void

参数:

类型 参数名 说明
bool value true允许,false禁止

解释:设置是否监听物理返回键,默认为false

virtual CAView* getView();

返回值:CAView*

参数:

解释:当前CAViewController的View根节点

virtual CAResponder* nextResponder();

返回值:CAResponder*

参数:

解释:获得下个监听者

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 void viewDidLoad() {};

返回值:void

参数:

解释:当前控制器的view被加载完毕后调用

virtual void viewDidUnload() {};

返回值:void

参数:

解释:当前控制器的view被移除掉时调用

virtual void viewDidAppear() {};

返回值:void

参数:

解释:显示时被调用

virtual void viewDidDisappear() {};

返回值:void

参数:

解释:隐藏时被调用

virtual void reshapeViewRectDidFinish() {};

返回值:void

参数:

解释:当前view被修改大小时被自动调用

virtual void keyBackClicked() {};

返回值:void

参数:

解释:back键响应函数(android平台)

virtual void keyMenuClicked() {};

返回值:void

参数:

解释:menu键响应函数(android平台)

virtual void addViewFromSuperview(CAView* node);

返回值:void

参数:

类型 参数名 说明
CAView* node 节点

解释:将自己添加到根节点View(例如window,也可是其他View)

virtual void removeViewFromSuperview();

返回值:void

参数:

解释:将自己从根节View点移除

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