選擇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