选择View还是Container
From Forum Nokia Wiki
绝大多数开发者在开发S60 应用的时候,都会对view和container概念产生误解和迷惑。
Contents[hide ] |
<script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
产生迷惑的大致原因
1) SDK范例
大多数的范例程序都把继承自CCoeControl 的类称作View (或许这是开发范例程序时候他们所使用的通用术语: View表示了一种数据集合,View可以继承自CAknView 也可以继承自CCoeControl ,所以称它为一种通用术语)。但是为了避免混淆,这些继承自CCoeControl 的类其实应该被命名为Container ,因为直接继承自CCoeControl 的所谓“view”应该被称为Container .
2) 缺少官方文档
到目前为止,并没有十分直接明了的官方文档解释什么是view,什么是container,它们之间的本质,以及他们各自应该被如何使用。
View究竟是什么
- 如果view是一个抽象术语,那么他的意思是一些数据的表示 。
- 如果我们在类这个范围内讨论,那么S60 平台的View 类是继承自CAknView 的类。
- 他并不是一个具体的控件.
- 它拥有一个继承自CCoeControl 的Container ,来创建抽象意义上的view。
Container究竟又是什么
- 如上所述,Container是继承自CCoeControl 的类。
- 它本身其实是一个控件,所有的控件都继承自控件基类——CCoeControl 。
- 他是一个可以被绘制并且可以包含一个或多个或者零个子控件的控件。
我们为什么需要Views
- 一般情况下,普通的应用程序都不需要view(继承自CAknView 的)。
- 如果你的应用程序有许多种屏幕表现形式,而且相互之间的切换方式十分复杂,那么你需要使用views。
- 当你希望在每一个view切换的时候保存各自的数据,并且希望新被切换的view可以获取到即将消失的view的数据的时候,你需要使用view。
- 当你希望你的应用程序可以在不启动整个程序的情况下就被打开某一个view的时候。
- view可以响应不同view的切换,菜单项事件,键盘/鼠标事件,并且将他们传递给相应的container类。
我们为什么需要Container
- 只要你需要在屏幕上显示一些东西,你当然需要container,这个类就是你和用户打交道的类了。例如,你可以给用户显示一个列表,或者获取他们的输入。
- 许多标准/通用/一般的应用程序都不需要view,相反container就可以完成绝大多数基本操作的需求。
转载自:http://wiki.forum.nokia.com/index.php/%E9%80%89%E6%8B%A9View%E8%BF%98%E6%98%AFContainer