我只编码了几个星期,所以请原谅我笨拙的代码。
我有一个需要根据NSPopupButton
中的选择进行更新的NSTextField
这些是我的出口:
@IBOutlet weak var inputText: NSTextField!
@IBOutlet weak var outputText: NSTextField!
@IBOutlet weak var inputBrowseButton: NSButton!
@IBOutlet weak var outputBrowseButton: NSButton!
@IBOutlet weak var codecSelector: NSPopUpButton!
这些是我的变量:
// derive default path and filename from @IBAction of inputBrowseButton
var defaultUrl: URL!
// derived from default of inputBrowse unless outputBrowse is used
var outputUrl: URL!
// change output path from @IBAction of outputBrowseButton
var outputDirectory: URL!
// change path extension from @IBAction of codecSelector NSPopupButton
var codecChosen: String = ""
// dictionary of arguments to form script for ffmpeg
var ffmpegCodecArg: String = ""
这是我将所有这些结合在一起的方法:
// construct output path for use in ffmpegArguments dictionary and display in outputText NSTextField
func updateOutputText(defaultUrl: URL?, outputDirectory: URL?) -> String {
if defaultUrl != nil && outputDirectory != nil {
let outputFile = defaultUrl!.deletingPathExtension()
let outputFilename = outputFile.lastPathComponent
outputUrl = outputDirectory!.appendingPathComponent(outputFilename)
outputText.stringValue = outputUrl.path + "(codecChosen)"
} else if defaultUrl == nil && outputDirectory != nil {
outputText.stringValue = outputDirectory!.path
} else {
outputUrl = defaultUrl!.deletingPathExtension()
outputText.stringValue = outputUrl.path + "(codecChosen)"
}
return outputText.stringValue
}
现在这个函数不起作用,因为我还没有弄清楚如何调用它。但这是另一个时间的问题,不是我在这里问的。
以前我在跑步
outputUrl = defaultUrl!.deletingPathExtension()
outputText.stringValue = outputUrl.path + "(codecChosen)"
作为我inputBrowseButton
@IBAction
方法的一部分,我正在运行
let outputFile = defaultUrl!.deletingPathExtension()
let outputFilename = outputFile.lastPathComponent
outputUrl = outputDirectory!.appendingPathComponent(outputFilename)
outputText.stringValue = outputUrl.path + "(codecChosen)"
作为我outputBrowseButton
@IBAction
方法的一部分。
这工作正常,除了在更新outputText.stringValue
时,当我在codecSelector
NSPopupButton
方法的@IBAction
中为codecChosen
变量分配一个新值时。
我怀疑问题是我没有将outputText
NSTextField
设置为在codecSelector
NSPopupButto
n更改时进行更新。我需要做什么才能实现这一目标?
如何在 NSTextField 中设置文本?
这工作正常,除了在更新outputText.stringValue时,当我的编解码器选择变量在我的@IBAction中为编解码器选择器NSPopupButton方法分配一个新值时。
尝试使用单独的方法来更改文本。
func changeText(inputString: String, inputField: NSTextField) {
inputField.stringValue = inputString
}
更多地分离代码可能会使您在开始时更容易跟踪。我对macOS并不完全熟悉,因此该方法可能不起作用,但是请尝试使用它的原理,看看是否可以进步。