accoのcocoaお勉強サイトです

2008年10月25日土曜日

outline view と table view

HMDT(白) 8章を読んでいて出てきたサンプルアプリ 「PropertyListViewer」を作った。
そして、その延長でiPhone用「PropertyListViewerもどき」を作った。

「PropertyListViewer」はテキストのプロパティリストファイルを読み込んで、階層構造をoutline viewに展開するアプリ。上半分がoutline View で下半分はテキストファイルをそのまま出力するtext view。プロパティリストのデータ構造をoutline viewに展開するために内部構造に変換し、それを表示する。outline view はデータ構造に親子関係があるときの表示に便利なビューで折りたたみできる。



view自体はデータをもたず、表示のタイミングでviewがdataSourceへデータを問い合わせる。dataSource は普通はコントローラで実装される。outline view なら NSOutlineViewDataSource プロトコル、table view は NSTableDataSource、iPhoneのtableならUITableViewDataSource。

NSOutlineViewDataSourceの必須メソッドは4つ。
  • outlineView:child:ofItem:
  • outlineView:isItemExpandable:,
  • outlineView:numberOfChildrenOfItem:
  • outlineView:objectValueForTableColumn:byItem:
iPhoneのUIKitにはoutline viewはないので、table viewを使ってみる。outline view のような親子関係表現ができないし、UIKitの table view は1カラムの制約がある。しかし、あくまでも1-viewでドリルダウンしたりはしないので親子関係については、孫まで表示(親=root、子=一階層目、孫=二階層目)。それ以上は表示できない仕様です。


スクリーンキャプチャで表示しているのは、UIKit.frameworkに含まれるiPhone のソフトウェアキーボードで利用される文言for日本語のプロパティリスト(keyboard-ja.plist)。


はまったこと
  • データ構造の理解
学んだこと
  • NSDictionaryの使い方
  • outline viewとtable view 全般、概要
ところで、Xcodeのドキュメントビューアーは別アプリとして実現してほしいな。なんだか使いにくい。
そしてiPhoneでSDKDoc見れるビューアーがあるとうれしいかもと思う、今日この頃。


0 件のコメント: