课程表

入门与环境搭建

简单控件的使用

视图控制

调用、存储、网络和动画

其他控件的使用

工具箱
速查手册

CAViewController

当前位置:免费教程 » 移动开发 » CrossApp

类说明

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被修改大小时被自动调用
keyBackClickedback键响应函数(android平台)
keyMenuClickedmenu键响应函数(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.


例如:

  1. bool RootWindow::init()
  2. {
  3. if (!CAWindow::init())
  4. {
  5. return false;
  6. }
  7. CAViewController* controller1 = new CAViewController();
  8. CAViewController* controller2 = new CAViewController();
  9. CAViewController* controller3 = new CAViewController();
  10. CAViewController* controller4 = new CAViewController();
  11. CAVector<CAViewController*> vec;
  12. vec.pushBack(controller1);
  13. vec.pushBack(controller2);
  14. vec.pushBack(controller3);
  15. vec.pushBack(controller4);
  16. //创建一个CATabBarController
  17. CATabBarController* tabBarController = new CATabBarController();
  18. //将CAVector<CAViewController*>添加到CATabBarController
  19. tabBarController->initWithViewControllers(vec);
  20. //将tabBarController添加到当前的Window
  21. this->setRootViewController(tabBarController);
  22. //释放内存
  23. controller1->release();
  24. controller2->release();
  25. controller3->release();
  26. controller4->release();
  27. tabBarController->release();
  28. }


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

CAView的管理

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


例如:

  1. void CopybookViewController::viewDidLoad()
  2. {
  3. _winRect = this->getView()->getBounds();
  4. CAImageView* imageView = CAImageView::createWithImage(CAImage::create("r/HelloWorld.png"));
  5. imageView->setImageViewScaleType(CAImageViewScaleTypeFitImageCrop);
  6. imageView->setFrame(_winRect);
  7. this->getView()->addSubview(imageView);
  8. }

CAViewController 属性

 Title

类型:std::string

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

    

NavigationController

类型:CANavigationController*

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


NavigationBarItem

类型: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
boolanimated是否需要弹出动画

解释:弹出一个CAViewController



void dismissModalViewController(bool animated);

返回值:void

参数:

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

解释:移除CAViewController


virtual bool isKeypadEnabled();

返回值:virtual bool

参数:

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


virtual void setKeypadEnabled(bool value);

返回值:virtual void 

参数:

类型
参数名说明
boolvaluetrue允许,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点移除

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号