-

类说明

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.


例如:

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{}。

    

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点移除