gpt4 book ai didi

Swift OSX NSImageView 拖放

转载 作者:行者123 更新时间:2023-11-28 06:12:46 25 4
gpt4 key购买 nike

我试图在拖放 NSImageView 上放置图像后执行操作,但它不起作用。如何控制拖放操作?

我有一个 logoFornecedorImageView,它是一个 NSImageView socket 。我的类继承自 NSDraggingDestinatio 并注册了拖动的类型,但是当我运行软件并在其上拖动图像时没有任何反应,控制台中没有打印任何内容。

import Cocoa

class InserirFornecedorViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate, NSDraggingDestination {

@IBOutlet weak var tituloJanelaLabel: NSTextField!
@IBOutlet weak var logoFornecedorImageView: NSImageView!
@IBOutlet weak var nomeFornecedorTextField: NSTextField!
@IBOutlet weak var materialFornecidoTextField: NSTextField!
@IBOutlet weak var materiaisTableView: NSTableView!
@IBOutlet weak var indicadorAtividadeProgressIndicator: NSProgressIndicator!
@IBOutlet weak var salvarFornercedorButton: NSButton!

var fornecedor: Fornecedor?

var logoFornecedorSelecionada = false

override func viewDidLoad() {

super.viewDidLoad()

materiaisTableView.dataSource = self
materiaisTableView.delegate = self

logoFornecedorImageView.register(forDraggedTypes: logoFornecedorImageView.registeredDraggedTypes)

fornecedor = Fornecedor()
}

func draggingEnded(_ sender: NSDraggingInfo?) {

print("END")
logoFornecedorSelecionada = true
}

func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation {

print("ENTERED")
return .generic
}

func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation {

print("UPDATED")
return .generic
}

func performDragOperation(_ sender: NSDraggingInfo) -> Bool {

return true
}

func numberOfRows(in tableView: NSTableView) -> Int {

return fornecedor?.materiais.count ?? 0
}

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {

var cell: NSTableCellView?

//if tableColumn == tableView.tableColumns[0]

if fornecedor?.materiais.count != 0 {
let identificadorCell = "materialCellView"

let material = fornecedor?.materiais[row]

cell = tableView.make(withIdentifier: identificadorCell, owner: nil) as? NSTableCellView

cell?.textField?.stringValue = material!
}

return cell
}

@IBAction func selecionarImagemButtonClicked(_ sender: NSButton) {

let panel = NSOpenPanel()
panel.canChooseFiles = true
panel.canChooseDirectories = false
panel.allowsMultipleSelection = false
panel.canCreateDirectories = false
//panel.allowedFileTypes = ["jpg","png","pct","bmp", "tiff"]
panel.allowedFileTypes = NSImage.imageTypes()

panel.beginSheetModal(for: view.window!) { (result) in

if result == NSFileHandlingPanelOKButton {
self.logoFornecedorImageView.image = NSImage(byReferencing: panel.url!)

self.logoFornecedorSelecionada = true
}
}
}

@IBAction func removerImagemButtonClicked(_ sender: NSButton) {

logoFornecedorImageView.image = NSImage(named: "LogoImagemTexto")

logoFornecedorSelecionada = false
}

@IBAction func adicionarMaterialButton(_ sender: NSButton) {

if materialFornecidoTextField.stringValue.isEmpty {
mostrarErro(mensagem: "Erro de preenchimento", informativo: "Informe o material")
materialFornecidoTextField.becomeFirstResponder()
} else {
fornecedor?.materiais.append(materialFornecidoTextField.stringValue)

materialFornecidoTextField.stringValue = ""

fornecedor?.materiais.sort {
$0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending
}
materiaisTableView.reloadData()
}
}

@IBAction func voltarButton(_ sender: NSButton) {

//let usarSoftViewController = presenting as! UsarSoftViewController
//usarSoftViewController.ativarBoxPrincipal()
//usarSoftViewController.usuario = usuario
//usarSoftViewController.fazerLogin()

dismiss(self)
}

func mostrarErro(mensagem: String, informativo: String) {

let alert = NSAlert()
alert.messageText = mensagem
alert.informativeText = informativo
alert.addButton(withTitle: "Fechar")
alert.alertStyle = .critical
alert.runModal()
}
}

最佳答案

谢谢大家

我刚刚执行了一个 Action ,它运行良好。

@IBAction func logoFornecedorImageDropped(_ sender: NSImageView) {

self.logoFornecedorSelecionada = true
}

关于Swift OSX NSImageView 拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com