Edited at

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 { } //🔰
    } //🔰