Swift

Swift:pull down menuの設定

以前、整理したはずですが、またしても迷ってしまいました。

迷ったのは、️NSMenuの中の最初#00のNSMenuItemの取り扱いです。通常、用意するデータ(配列)は2番目#01以降のものになるのですが、#00を特別に付加する必要があります。

メニュの構成は、

  • NSPopUpButton➡️NSPopUpButton➡️NSPopUpButtonCell➡️NSMenu➡️NSMenuItem

になります。

Screenshot 2016-05-05 13.54.04

@IBOutlet var  xStaticCell:NSPopUpButtonCell!

var wFilterArray:[String] = []
var wInfoArray:[String] = []
var wHitCount:String = “”
wInfoArray.append(“”) //#00をsetする。
for inx in 0 ..< wFilterArray.count {
 << ここでMenuItemのtitleを作成 >>
wInfoArray.append(wHitCount) //配列にset。
}
xStaticCell!.removeAllItems() //pull down menuのクリア。
xStaticCell!.addItemsWithTitles(wInfoArray)   //pull down menuのtitleをset。
xStaticCell!.itemAtIndex(0)!.title = “🚩”  //表示用のmenuItem。
xStaticCell!.itemAtIndex(1)!.state  = NSOffState //チェックを外す。

元々、アイコンをxStaticCell!.imageに設定していて、上記ロジックにバグがあったため、表示されないという問題が起きていました。原因は、”🚩”をセットしている箇所でremoveAllItems()のあとにブランク” “を設定すればよかったのですが、そうしなかったことで、アイコンがどうしても表示できませんでした。NSImageをsaveしたり、いろいろやって、上記のような解決方法に至りました。

実際のメニュは、🚩をクリックしたとき、コンテンツブロックしたフィルタの個数とフィルタ名が次のように表示されます。もちろん、まだ、暫定版です。

Screenshot 2016-05-05 14.43.10

Categories: Swift, 技術

Tagged as: ,