Swift 根据NSPopupButton中的选择更新NSTextField
我只编写了几个星期的代码,所以请原谅我毫无疑问的笨拙代码 我有一个Swift 根据NSPopupButton中的选择更新NSTextField,swift,xcode,cocoa,Swift,Xcode,Cocoa,我只编写了几个星期的代码,所以请原谅我毫无疑问的笨拙代码 我有一个NSTextField,需要根据nspoupbutton 以下是我的销售渠道: @IBOutlet weak var inputText: NSTextField! @IBOutlet weak var outputText: NSTextField! @IBOutlet weak var inputBrowseButton: NSButton! @IBOutlet weak var outputBrowseButton: NSB
NSTextField
,需要根据nspoupbutton
以下是我的销售渠道:
@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
@iAction
方法的一部分,我正在运行
let outputFile = defaultUrl!.deletingPathExtension()
let outputFilename = outputFile.lastPathComponent
outputUrl = outputDirectory!.appendingPathComponent(outputFilename)
outputText.stringValue = outputUrl.path + "\(codecChosen)"
作为我的输出浏览按钮
@iAction
方法的一部分
除了更新outputText.stringValue
时,在我的@iAction
中为codecSelector
codecSelector
变量分配了一个新值外,该方法工作正常
我怀疑问题在于我没有设置我的outputText
NSTextField
以在codecSelector
func changeText(inputString: String, inputField: NSTextField) {
inputField.stringValue = inputString
}
进一步分离代码可能会使您在开始时更容易跟踪。我对macOS并不完全熟悉,因此这种方法可能不起作用,但请尝试使用它的原理,看看您是否能取得进展。您好,谢谢。如果我理解你的意思,我想这就是我试图使用包含的函数所做的,从
func updateOutputText(defaultUrl:URL?,outputDirectory:URL?)->String
开始,我将使用它开始工作。但我的问题是,当构建字符串(codecselected
)所需的一个变量的值根据NspupButton的输入发生变化时,要更新NXTextField。你是说如果我让我的独立函数正常工作,那应该会自动发生吗?我想我明白你现在说的了。我调用该函数来更新CodeSelector弹出窗口的IBaction方法中的outputText字段,它现在可以工作了。我现在只需要找出弹出窗口的默认设置的问题。。。。我也是这样做的。我为CodeSelector弹出窗口创建了一个方法,并在我的方法中调用它来选择输入和输出文件。现在一切都好了。我很高兴现在一切都好了!如果我帮了忙,你介意给我一个提升票吗?我投了,虽然这不会影响可见的分数,因为我也是新来的。