2008年6月19日 星期四

應用NSTabView切換視窗內容

在設計軟體時,有時候會需要在兩個不同的View之間做切換。
舉例來說,當我們在iTunes中,點擊左方資料庫的「音樂」,「影片」或「電視節目」,在右方的Detail View中,預設會以列表的方式呈現。
但當我們點擊到「Apple Store」時,則右方的Detail View會以類似網頁的方式,呈現目前Apple Store的內容。
在過去,剛開始學習Cocoa的時候,因為不清楚可用的元件,對於這類的需求,在實作上,往往會以一個Custom View做為Wrapper,用置換其Content View的方式,來達成切換內容的需求。
不過事實上,Cocoa已經提供了好用的元件--NSTabView,能夠更快速的完成類似的UI。
一般我們在使用NSTabView的時候,都是在需要明確的Tab元件 ,也就是需要有一個地方能夠秀出
1. 目前的View的目的,或是名稱。
2. 其他可選用的View。
不過上面我所舉的例子,則比較類似UI狀態的切換,通常不會秀出這些資訊--在這種情形下,一般我們不太會去考慮用到NSTabView。
但是,Cocoa的NSTabView,提供了另一種型態的使用法--Tabless TabView。利用NSTabView的Tabless type,就可以不用秀出Tab,看起來就如同用Custom View去實作View的切換一樣。
而使用Tabless type的View,還有一個好處,就是可以自行去更換Tab的樣式,而不需撰寫NSTabView的子類別。
Xcode的UI中,Project/Debug View的切換,就是一個實際應用的例子。