01/16 TextFieldの表示/非表示設定
NSTextFieldの表示/非表示を行うサンプルです。
NSTextFieldの表示/非表示を行うサンプルです。
AppleScript Studioで、各GUI部品を表示したり隠したりするのは、実に「よくある処理」でした。ただ、それをAppleScriptObjCで再現しようとすると、簡単そうな割に再現しづらい状況。
先日も、AppleScriptObjCでプログラムを組んでいたところ、Text Fieldの表示/非表示をいじくりたくなったのですが……いくつか並べられたText Fieldをまとめて隠そうとする方法が見つからず、面倒くさかったのでtab viewにまとめて突っ込んで、tabレスのtabにして(tabが表示されない)、表示tab view itemを切り替えることでまとめて表示/非表示を制御してしまいました。
時間のあるときに、「実際のところはどうやるんだろう?」と思い出し、検索エンジンで調べてみました。Scripter連中がObjective-C系のMLやフォーラムで質問を投稿している様子を見つけましたが、対する回答は……
「Window上から削除しちゃえばいいじゃん」
のような「それだと明らかに再表示は無理ですよね〜」という返事だったりして、納得しづらいものがありました。
しばらくMLの過去ログを中心に調べていたものの、どうもやり方が見当たらなかったので、根本的にやり方を変更してみたらあっさり実現。

TextFieldのvisibilityをshared user defaultsにbindして、その環境設定値を書き換える(falseで表示、trueで非表示)ようにしてみました。

ASOCはサンプルや文献が少ないので、本当にこれでいいのか分かりませんが、動いているのでいいんじゃないでしょうか。
ちなみに、shared user defaultsの環境設定値の書き換えはedama2さんからコメントで教えていただいたあと、実際にプロジェクトを送っていただいたものからピックアップしました(直裁的な表現でいえばコピペですね)。
Xcodeのエディタの背景色を白から薄緑に変更してみたら、AppleScriptObjCの「変数ばっかり」なプログラムに対する抵抗感が薄れました(Allan CraigのBlogで発見)。本当は背景色を黒にするともっとよいのですが、背景色が白から変更できないAppleScriptエディタ上でも見えるためにはこのぐらいの色がよいではないかと思っています。