×
Namespaces

Variants
Actions

视图切换

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

兼容于
平台安全性
需要的签名: Self-Signed
能力: None

文章
翻译:
hoolee
最后由 hamishwillee 在 27 Aug 2012 编辑

Contents

概述

下列代码演示了如何切换视图,这段代码使用了Avkon视图切换框架类CAknView

为什么以及何时要用到视图?

  • 当你的程序有多个屏幕显示,有着复杂的导向性时;
  • 当你需要对视图切换进行存储数据时,以便进入视图时显示最新的更新数据
  • 当你需要从一个屏幕向另一个或外部程序发送数据时
  • CAknView处理菜单命令,切换视图,向相关容器类发送键盘/触摸事件
  • 简单的程序不需要从CAknView派生视图

S60视图框架一般用在S60平台的程序,每个视图都有自己的空间堆栈,视图框架使用CAknViewAppUi类来做UI控制器。这个UI控制器管理一个或多个CAknView派生类。而视图类则操控从CCoeControl派生的控件。


MMP文件

需要下列能力及链接库:

CAPABILITY None
 
LIBRARY avkon.lib
LIBRARY eikcore.lib
LIBTATY eiksrv.lib

头文件

#include <aknview.h>
#include <aknviewappui.h>


源文件

Application app UI class CAknViewAppUi creates the default view on its construction.

void CSomeAppUi::ContructL()
{
BaseConstructL(EAknEnableSkin);
// Create your view derived from CAknView
iMyView = CMyView::NewL();
// Add view into control stack
AddViewL(iMyView);
// Use this as a default view
SetDefaultViewL(*iMyView);
}

CAknView 激活视图. DoActivateL()则当用户不需要视图时由视图server来调用

void CSomeView::DoActivateL(const TVwsViewId& aPrevViewId,
TUid aCustomMessageId,
const TDesC8& aCustomMessage)
{
if (iSomeControl == NULL)
{
// Create control for the view
iSomeControl = CSomeContainer::NewL(ClientRect());
// Add it to control stack
AppUi()->AddToStackL(*this, iSomeControl);
}
}
 
void CSomeView::DoDeactivate()
{
if (iSomeControl != NULL)
{
// Remove view from the control stack
AppUi()->RemoveFromViewStack(*this, iSomeControl);
// Delete view
delete iSomeControl;
iSomeControl = NULL;
}
}

在你的程序切换视图时可以使用AppUi类的ActivateLocalViewL()方法,首先新视图被激活,然后前一个视图被调用DoDeactivate方法

const TUid KSomeViewId = { 1 }; // UID of the some view
ActivateLocalViewL(KSomeViewId); // activate some view


后记

视图将被激活并切换.


See also

This page was last modified on 27 August 2012, at 05:11.
125 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×