swift3+OSX開発格闘記第13回「TreeViewのしんどさ」

Author:

開発においてなかなかに苦戦したのがswiftでのTreeViewである。
色々と癖があるのですよこれ。

自分の場合OutlineViewってのを使ったのだけれども。
まず最初にNSOutlineViewDelegateをextendsしてツリークリックや展開の処理をViewControllerに委譲させる。
そしてNSOutlineViewDataSourceもextendsさせてデータソースを扱うようにする。
んでオーバーロードされているoutlineViewそれぞれをオーバーライドさせる。文章だけじゃ分かりづらいっすねえ。

要は何個ありますか?ってのをオーバーライドして、ツリーを開いたら何を出す?てのをオーバーライドして、クリックしたらどうする?ってのをオーバーライドして、とそんな感じなのですよ。

VisualStudioはイベント駆動型で実装できるからOnExpandとかOnSelectとかそんな感じでフックをかければ簡単に実装できるのだけど、同じ気持ちでswiftやったらえらい大変でした。
まぁuwpはTreeView自体無いのですが。

当然のことながらiOSとは仕様も違うし、なんだかこういうnotify系は今のswift3だとなんか挙動がおかしいとかなんとか。
ウィンドウのリサイズもうまく通知を受け取れなかったし。
やり方が悪いのかそれともswiftが悪いのか。

本気でstack overflowに書き込もうか迷った件でしたね。

第1回「ぐぐって出てくるのはどれもこれもiOS」
第2回「配列を渡すとインスタンスがコピーされた」
第3回「初期化しないメンバ変数なんて許しません」
第4回「NSStringとString、NSURLとUrl」
第5回「for文が、++が、、、」
第6回「ビルドおもーい」
第7回「do、try、catch」
第8回「swift2では動くのにswift3では動かない」
第9回「ふおおWindowsFormみたい」
第10回「Labelの値を変える」
第11回「windowControllerとViewControllerとView」
第12回「ボタンはViewController、メニューはDelegate」
第13回「TreeViewのしんどさ」
第14回「¥nマークは改行しません」
第15回「instantiateじゃ駄目ぇ」
第16回「ScrollViewの中にTextView」
第17回「ファイルをどう読み書きすればいいんじゃ」
第18回「右クリック・・・」
第19回「isIntなんて無いです」
第20回「anyはswitchでキャスト」
第21回「MessageBox.Show」
第22回「BezierはViewの中で」
第23回「512pxのアイコンを用意せよ」
第24回「アーカイブ作成」
第25回「これから始める人へ」

Facebook にシェア
Pocket