macos

Swift:NSImageをアイコン名で処理

You can handle the icon NSImage in Assets.xcassets by the name like NSImage(named:"helpE9"). In my case, there are helpE0 - helpEn and helpJ0 - helpJn and the number (n) depends on the app. I defined the image in the array as usual. It was OK except I had to define the array per app every time. So I gave up. Instead, I have replace the code as described below.

Assets.xcassetsに入れたイメージをそのアイコン名で処理する方法

やっていることは初期処理で、次の2点。

  • helpE0〜helpEn、helpJ0〜helpJnの登録済みのイメージの名前で配列を作ります。個数はアプリ依存。
  • 作成したイメージ名配列に従い、イメージの配列を作成します。

    初期処理でイメージを配列に登録する

    MesaHelpArea
    
    var helpIndex:Int                   = 0                         //🔰現在のヘルプ画像位置。
    var helpIndexE:[Int]                = []                        //🔰ヘルプ画像位置🇺🇸。
    var helpIndexJ:[Int]                = []                        //🔰ヘルプ画像位置🇯🇵。
    var helpIndexArray:[Int]            = []                        //🔰ヘルプ画像位置。
    var helpImage:[NSImage]             = []                        //🔰
    ______________________________________________________________________________________________
        let H               = MesaHelpArea()                        //🔰
    
        var wImageEnglish:[String]  = []                            //🔰
        var wImageJapanese:[String] = []                            //🔰
        H.helpImage                 = []                            //🔰
        for inx in 0..<20 {                                         //🔰
            wImageEnglish.append("helpE" + String(inx))             //🔰helpE0〜helpeEn
            wImageJapanese.append("helpJ" + String(inx))            //🔰helpJ0〜helpeJn
        }                                                           //🔰
        for inx in 0..<wImageEnglish.count {                        //🔰
            if NSImage(named:NSImage.Name(rawValue: wImageEnglish[inx])) != nil {//🔰イメージが存在?
                H.helpImage.append(NSImage(named:NSImage.Name(rawValue: wImageEnglish[inx]))!)//🔰
            } else { }                                              //🔰
        }                                                           //🔰
        for inx in 0..<wImageEnglish.count {                        //🔰
            if NSImage(named:NSImage.Name(rawValue: wImageEnglish[inx])) != nil {//🔰イメージが存在?、
                H.helpImage.append(NSImage(named:NSImage.Name(rawValue: wImageJapanese[inx]))!)//🔰
            } else { }                                              //🔰
        }                                                           //🔰