W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
類說(shuō)明
CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制視圖及CAViewController之間的通信與協(xié)調(diào)。CAViewController是所有CrossApp中Controller的基類。
基類
CAContentContainer, CAKeypadDelegate
CAViewController 屬性(點(diǎn)擊查看方法介紹)
屬性 | 方法 |
Title | 標(biāo)題 |
NavigationController | 獲取NavigationController |
NavigationBarItem | 獲取NavigationBarItem |
TabBarController | 獲取TabBarController |
TabBarItem | 獲取TabBarItem |
CAViewController 方法(點(diǎn)擊查看方法介紹)
方法 | 說(shuō)明 |
init | 初始化 |
getNibName | 返回類型的名稱 |
isViewRunning | 當(dāng)前View是否再運(yùn)行 |
setNavigationBarItem | 設(shè)置CANavigationBarItem屬性 |
setTabBarItem | 設(shè)置CATabBarItem屬性 |
presentModalViewController | 彈出一個(gè)CAViewController |
dismissModalViewController | 移除CAViewController |
isKeypadEnabled | 設(shè)置監(jiān)聽(tīng)物理返回鍵 |
setKeypadEnabled | 設(shè)置監(jiān)聽(tīng)物理返回鍵 |
getView | 獲取當(dāng)前CAViewController的View根節(jié)點(diǎn) |
nextResponder | 獲得下個(gè)監(jiān)聽(tīng)者 |
ccTouchBegan | 觸摸事件開(kāi)始時(shí)的回調(diào)函數(shù) |
ccTouchMoved | 觸摸事件中觸點(diǎn)移動(dòng)時(shí)的回調(diào)函數(shù) |
ccTouchEnded | 觸摸事件結(jié)束時(shí)的回調(diào)函數(shù) |
ccTouchCancelled | 觸摸非正常結(jié)束時(shí)的回調(diào)函數(shù)。(例如:電話或鎖屏) |
viewDidLoad | 當(dāng)前控制器的view被加載完畢后調(diào)用 |
viewDidUnload | 當(dāng)前控制器的view被移除掉時(shí)調(diào)用 |
viewDidAppear | 顯示時(shí)被調(diào)用 |
viewDidDisappear | 隱藏時(shí)被調(diào)用 |
reshapeViewRectDidFinish | 當(dāng)前view被修改大小時(shí)被自動(dòng)調(diào)用 |
keyBackClicked | back鍵響應(yīng)函數(shù)(android平臺(tái)) |
keyMenuClicked | menu鍵響應(yīng)函數(shù)(android平臺(tái)) |
addViewFromSuperview | 將自己添加到根節(jié)點(diǎn)View |
removeViewFromSuperview | 將自己從根節(jié)View點(diǎn)移除 |
生命周期
viewDidLoad() //第一次被加載時(shí)調(diào)用(僅有一次會(huì)被調(diào)用)
viewDidAppear() //顯示時(shí)被調(diào)用(例如TableController切換到顯示)
viewDidDisappear() //隱藏時(shí)被調(diào)用(例如TableController切換到其他Controller
viewDidUnload() //移除時(shí)被調(diào)用(僅有一次會(huì)被調(diào)用)
注意:
Window直接加載的CAViewController顯示時(shí)不會(huì)調(diào)用viewDidAppear()函數(shù)
CAViewController之間的管理
切換
如果CAViewController是直接被CAWindow所加載的,那么它就可以直接使用presentModalViewController(CAViewController* controller, bool animated);來(lái)跳轉(zhuǎn)到新的CAViewController,或通過(guò)dismissModalViewController(bool animated);對(duì)當(dāng)前的CAViewController關(guān)閉。
嵌套
CAViewController是可以相互嵌套管理的,例如CATableController可以管理多個(gè)其他的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);
//創(chuàng)建一個(gè)CATabBarController
CATabBarController* tabBarController = new CATabBarController();
//將CAVector<CAViewController*>添加到CATabBarController
tabBarController->initWithViewControllers(vec);
//將tabBarController添加到當(dāng)前的Window
this->setRootViewController(tabBarController);
//釋放內(nèi)存
controller1->release();
controller2->release();
controller3->release();
controller4->release();
tabBarController->release();
}
這樣就使用CATabBarController來(lái)管理CAViewController的顯示與隱藏了
CAView的管理
一般我們會(huì)把邏輯代碼寫(xiě)到viewDidLoad()方法中,我回把所要顯示的CAView通過(guò)this->getView()->addSubview(CrossApp::CAView *child);添加到m_pView的子節(jié)點(diǎn)上。
例如:
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 屬性
類型:std::string
解釋:標(biāo)題。set/get{}。
類型:CANavigationController*
解釋:獲取NavigationController屬性。get{}。
類型:CANavigationBarItem*
解釋:獲取NavigationBarItem屬性。get{}。
類型:CATabBarController*
解釋:獲取TabBarController。get{}。
類型:CATabBarItem*
解釋:獲取TabBarItem。get{}。
CAViewController 方法
返回值:bool
參數(shù):
解釋:初始化,默認(rèn)返回true,如果返回false則初始化失敗
返回值:const char*
參數(shù):
解釋:返回類型的名稱
返回值:bool
參數(shù):
解釋:當(dāng)前View是否再運(yùn)行
void setNavigationBarItem(CANavigationBarItem* item);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CANavigationBarItem* | item | 項(xiàng)目 |
解釋:設(shè)置CANavigationBarItem屬性(只有被CANavigationController管理才會(huì)顯示)
void setTabBarItem(CATabBarItem* item);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CANavigationBarItem* | item | 項(xiàng)目 |
解釋:設(shè)置CATabBarItem屬性(只有被CATableController管理才會(huì)顯示)
void presentModalViewController(CAViewController* controller, bool animated);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CAViewController* | controller | 要彈出的CAViewController |
bool | animated | 是否需要彈出動(dòng)畫(huà) |
解釋:彈出一個(gè)CAViewController
void dismissModalViewController(bool animated);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
bool | animated | 是否需要?jiǎng)赢?huà) |
解釋:移除CAViewController
virtual bool isKeypadEnabled();
返回值:virtual bool
參數(shù):
解釋:是否監(jiān)聽(tīng)物理返回鍵(android的Back鍵或pc的Esc鍵)
virtual void setKeypadEnabled(bool value);
返回值:virtual void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
bool | value | true允許,false禁止 |
解釋:設(shè)置是否監(jiān)聽(tīng)物理返回鍵,默認(rèn)為false
返回值:CAView*
參數(shù):
解釋:當(dāng)前CAViewController的View根節(jié)點(diǎn)
virtual CAResponder* nextResponder();
返回值:CAResponder*
參數(shù):
解釋:獲得下個(gè)監(jiān)聽(tīng)者
virtual bool ccTouchBegan(CATouch *pTouch, CAEvent *pEvent);
返回值:bool
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CATouch | *pTouch | 觸摸傳遞對(duì)象 |
CAEvent | *pEvent | 此參數(shù)待定 |
解釋:觸摸事件開(kāi)始時(shí)的回調(diào)函數(shù)
virtual void ccTouchMoved(CATouch *pTouch, CAEvent *pEvent);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CATouch | *pTouch | 觸摸傳遞對(duì)象 |
CAEvent | *pEvent | 此參數(shù)待定 |
解釋:觸摸事件中觸點(diǎn)移動(dòng)時(shí)的回調(diào)函數(shù)
virtual void ccTouchEnded(CATouch *pTouch, CAEvent *pEvent);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CATouch | *pTouch | 觸摸傳遞對(duì)象 |
CAEvent | *pEvent | 此參數(shù)待定 |
解釋:觸摸事件結(jié)束時(shí)的回調(diào)函數(shù)
virtual void ccTouchCancelled(CATouch *pTouch, CAEvent *pEvent);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CATouch | *pTouch | 觸摸傳遞對(duì)象 |
CAEvent | *pEvent | 此參數(shù)待定 |
解釋:觸摸非正常結(jié)束時(shí)的回調(diào)函數(shù)。(例如:電話或鎖屏)
virtual void viewDidLoad() {};
返回值:void
參數(shù):
解釋:當(dāng)前控制器的view被加載完畢后調(diào)用
virtual void viewDidUnload() {};
返回值:void
參數(shù):
解釋:當(dāng)前控制器的view被移除掉時(shí)調(diào)用
virtual void viewDidAppear() {};
返回值:void
參數(shù):
解釋:顯示時(shí)被調(diào)用
virtual void viewDidDisappear() {};
返回值:void
參數(shù):
解釋:隱藏時(shí)被調(diào)用
virtual void reshapeViewRectDidFinish() {};
返回值:void
參數(shù):
解釋:當(dāng)前view被修改大小時(shí)被自動(dòng)調(diào)用
virtual void keyBackClicked() {};
返回值:void
參數(shù):
解釋:back鍵響應(yīng)函數(shù)(android平臺(tái))
virtual void keyMenuClicked() {};
返回值:void
參數(shù):
解釋:menu鍵響應(yīng)函數(shù)(android平臺(tái))
virtual void addViewFromSuperview(CAView* node);
返回值:void
參數(shù):
類型 | 參數(shù)名 | 說(shuō)明 |
CAView* | node | 節(jié)點(diǎn) |
解釋:將自己添加到根節(jié)點(diǎn)View(例如window,也可是其他View)
virtual void removeViewFromSuperview();
返回值:void
參數(shù):
解釋:將自己從根節(jié)View點(diǎn)移除
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: