W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
類說明
CAViewController是CrossApp中MVC中的C(控制器),它的作用是用于CAView的管理、控制視圖及CAViewController之間的通信與協(xié)調。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 | 設置監(jiān)聽物理返回鍵 |
setKeypadEnabled | 設置監(jiān)聽物理返回鍵 |
getView | 獲取當前CAViewController的View根節(jié)點 |
nextResponder | 獲得下個監(jiān)聽者 |
ccTouchBegan | 觸摸事件開始時的回調函數 |
ccTouchMoved | 觸摸事件中觸點移動時的回調函數 |
ccTouchEnded | 觸摸事件結束時的回調函數 |
ccTouchCancelled | 觸摸非正常結束時的回調函數。(例如:電話或鎖屏) |
viewDidLoad | 當前控制器的view被加載完畢后調用 |
viewDidUnload | 當前控制器的view被移除掉時調用 |
viewDidAppear | 顯示時被調用 |
viewDidDisappear | 隱藏時被調用 |
reshapeViewRectDidFinish | 當前view被修改大小時被自動調用 |
keyBackClicked | back鍵響應函數(android平臺) |
keyMenuClicked | menu鍵響應函數(android平臺) |
addViewFromSuperview | 將自己添加到根節(jié)點View |
removeViewFromSuperview | 將自己從根節(jié)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);
//創(chuàng)建一個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的子節(jié)點上。
例如:
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
解釋:標題。set/get{}。
類型:CANavigationController*
解釋:獲取NavigationController屬性。get{}。
類型:CANavigationBarItem*
解釋:獲取NavigationBarItem屬性。get{}。
類型:CATabBarController*
解釋:獲取TabBarController。get{}。
類型:CATabBarItem*
解釋:獲取TabBarItem。get{}。
CAViewController 方法
返回值:bool
參數:
解釋:初始化,默認返回true,如果返回false則初始化失敗
返回值:const char*
參數:
解釋:返回類型的名稱
返回值: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
參數:
解釋:是否監(jiān)聽物理返回鍵(android的Back鍵或pc的Esc鍵)
virtual void setKeypadEnabled(bool value);
返回值:virtual void
參數:
類型 | 參數名 | 說明 |
bool | value | true允許,false禁止 |
解釋:設置是否監(jiān)聽物理返回鍵,默認為false
返回值:CAView*
參數:
解釋:當前CAViewController的View根節(jié)點
virtual CAResponder* nextResponder();
返回值:CAResponder*
參數:
解釋:獲得下個監(jiān)聽者
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 | 節(jié)點 |
解釋:將自己添加到根節(jié)點View(例如window,也可是其他View)
virtual void removeViewFromSuperview();
返回值:void
參數:
解釋:將自己從根節(jié)View點移除
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: