MCPcopy Create free account
hub / github.com/9miao/CrossApp / replaceViewController

Method replaceViewController

CrossApp/controller/CAViewController.cpp:530–577  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

528}
529
530void CANavigationController::replaceViewController(CrossApp::CAViewController *viewController, bool animated)
531{
532 if (this->getView()->getSuperview() == NULL)
533 {
534 return;
535 }
536
537 if (m_pNavigationBars.size() == 1)
538 {
539 CANavigationBarItem* item = viewController->getNavigationBarItem();
540 if (item == NULL)
541 {
542 item = CANavigationBarItem::create("");
543 }
544 item->setShowGoBackButton(false);
545 viewController->setNavigationBarItem(item);
546 }
547
548 float x = this->getView()->getBounds().size.width;
549
550 CAView* lastContainer = m_pContainers.back();
551 this->createWithContainer(viewController, DLayout(DHorizontalLayout_L_R(x, -x), DVerticalLayoutFill));
552 CAView* newContainer = m_pContainers.back();
553
554 CAApplication::getApplication()->getTouchDispatcher()->setDispatchEventsFalse();
555
556 if (animated)
557 {
558 CAViewAnimation::beginAnimations("", NULL);
559 CAViewAnimation::setAnimationDuration(0.25f);
560 CAViewAnimation::setAnimationDelay(1/30.0f);
561 CAViewAnimation::setAnimationCurve(CAViewAnimationCurveEaseOut);
562 lastContainer->setFrameOrigin(DPoint(-x/3.0f, 0));
563 CAViewAnimation::commitAnimations();
564
565 CAViewAnimation::beginAnimations("", NULL);
566 CAViewAnimation::setAnimationDuration(0.25f);
567 CAViewAnimation::setAnimationDelay(1/60.0f);
568 CAViewAnimation::setAnimationCurve(CAViewAnimationCurveEaseOut);
569 CAViewAnimation::setAnimationDidStopSelector(this, CAViewAnimation0_selector(CANavigationController::replaceViewControllerFinish));
570 newContainer->setFrameOrigin(DPointZero);
571 CAViewAnimation::commitAnimations();
572 }
573 else
574 {
575 this->replaceViewControllerFinish();
576 }
577}
578
579void CANavigationController::replaceViewControllerFinish()
580{

Calls 13

createWithContainerMethod · 0.95
DHorizontalLayout_L_RFunction · 0.85
DPointClass · 0.85
getSuperviewMethod · 0.80
getViewMethod · 0.80
setShowGoBackButtonMethod · 0.80
setNavigationBarItemMethod · 0.80
getTouchDispatcherMethod · 0.80
setFrameOriginMethod · 0.80
sizeMethod · 0.45