Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 显示选定项目的图像而非文本的NSPOUPPBUTON_Swift_Macos_Cocoa_Nspopupbutton - Fatal编程技术网

Swift 显示选定项目的图像而非文本的NSPOUPPBUTON

Swift 显示选定项目的图像而非文本的NSPOUPPBUTON,swift,macos,cocoa,nspopupbutton,Swift,Macos,Cocoa,Nspopupbutton,我正在创建一个NSPoupButton,它有多个NSMenuItems,每个NSMenuItems都有一个图像和一个标题。我尝试创建的功能如下:当弹出窗口显示时,我希望它正常运行,显示标题和图像,但是当弹出窗口关闭时,我希望按钮仅显示所选项目的图像。很像日历Mac应用程序的行为 非常感谢您的帮助。您只需设置popupubutton.imagePosition=.imageOnly。下面是一个例子: func swatch(size: NSSize, color: NSColor) ->

我正在创建一个NSPoupButton,它有多个NSMenuItems,每个NSMenuItems都有一个图像和一个标题。我尝试创建的功能如下:当弹出窗口显示时,我希望它正常运行,显示标题和图像,但是当弹出窗口关闭时,我希望按钮仅显示所选项目的图像。很像日历Mac应用程序的行为


非常感谢您的帮助。

您只需设置
popupubutton.imagePosition=.imageOnly
。下面是一个例子:

func swatch(size: NSSize, color: NSColor) -> NSImage {
    let image = NSImage(size: size)
    image.lockFocus()
    color.drawSwatch(in: NSMakeRect(0, 0, size.width, size.height))
    image.unlockFocus()

    return image
}

override func viewDidLoad() {
    super.viewDidLoad()

    let homeItem = NSMenuItem(title: "Home", action: nil, keyEquivalent: "")
    let workItem = NSMenuItem(title: "Work", action: nil, keyEquivalent: "")
    let familityItem = NSMenuItem(title: "Family", action: nil, keyEquivalent: "")

    let size = NSSize(width: 12, height: 12)
    homeItem.image = swatch(size: size, color: .blue)
    workItem.image = swatch(size: size, color: .purple)
    familityItem.image = swatch(size: size, color: .orange)

    let menu = NSMenu()
    menu.addItem(homeItem)
    menu.addItem(workItem)
    menu.addItem(familityItem)
    popupButton.menu = menu
    popupButton.imagePosition = .imageOnly
}

您只需设置
popupubutton.imagePosition=.imageOnly
。下面是一个例子:

func swatch(size: NSSize, color: NSColor) -> NSImage {
    let image = NSImage(size: size)
    image.lockFocus()
    color.drawSwatch(in: NSMakeRect(0, 0, size.width, size.height))
    image.unlockFocus()

    return image
}

override func viewDidLoad() {
    super.viewDidLoad()

    let homeItem = NSMenuItem(title: "Home", action: nil, keyEquivalent: "")
    let workItem = NSMenuItem(title: "Work", action: nil, keyEquivalent: "")
    let familityItem = NSMenuItem(title: "Family", action: nil, keyEquivalent: "")

    let size = NSSize(width: 12, height: 12)
    homeItem.image = swatch(size: size, color: .blue)
    workItem.image = swatch(size: size, color: .purple)
    familityItem.image = swatch(size: size, color: .orange)

    let menu = NSMenu()
    menu.addItem(homeItem)
    menu.addItem(workItem)
    menu.addItem(familityItem)
    popupButton.menu = menu
    popupButton.imagePosition = .imageOnly
}

到目前为止你试过什么?您的代码是什么样子的?
nspoupbutton
NSButton
的子类。您是否尝试在选择项目时设置标题和图像?到目前为止您尝试了什么?您的代码是什么样子的?
nspoupbutton
NSButton
的子类。您是否尝试在选择项目时设置标题和图像?您可以在故事板或xib中设置图像位置。工作完美,我知道我错过了一些简单的东西。谢谢你可以在故事板或xib中设置图像位置。工作完美,我知道我错过了一些简单的东西。谢谢