将值从 inputField 传递到 NSTextField
Passing a value from inputField to NSTextField
我想通过按下按钮将字符串值从一个 NSTextField
传递到另一个 NSTextField
。我用这个for-in loop
。我需要将值从 inputField
传递到 visibleText1
,然后传递到 visibleText2
,再传递到 visibleText3
。但是没用。
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var inputField: NSTextField!
@IBOutlet weak var visibleText1: NSTextField!
@IBOutlet weak var visibleText2: NSTextField!
@IBOutlet weak var visibleText3: NSTextField!
func applicationDidFinishLaunching(aNotification: NSNotification) { }
func applicationWillTerminate(aNotification: NSNotification) { }
@IBAction func applyButton(sender: AnyObject) {
for u in (visibleText1.stringValue...visibleText3.stringValue) {
visibleText.stringValue[u] = inputField.stringValue
inputField.stringValue = ""
}
}
}
Xcode 给我一个错误:
// Type 'ClosedInterval<String>' does not conform to protocol 'SequenceType'
怎么做才对?
这有几处错误,但我将从将起作用的地方开始:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var inputField: NSTextField!
@IBOutlet weak var visibleText1: NSTextField!
@IBOutlet weak var visibleText2: NSTextField!
@IBOutlet weak var visibleText3: NSTextField!
func applicationDidFinishLaunching(aNotification: NSNotification) { }
func applicationWillTerminate(aNotification: NSNotification) { }
@IBAction func applyButton(sender: AnyObject) {
for u in [visibleText1, visibleText2, visibleText3] {
u.stringValue = inputField.stringValue
}
}
}
那么原版有什么问题?
1) 您的 (visibleText1.stringValue...visibleText3.stringValue)
是 String ... String
类型,这不是您想要的。您需要有一个 NSTextField
数组。
2) visibleText.stringValue[u]
甚至都不是东西。没有变量 visibleString
,即使它是一个 NSTextField
- 我认为这是你想要的,它的 .stringValue
是一个 String
,而不是一个数组。
3) 你在 for 循环中设置 inputField.stringValue = ""
做什么?如果您的构造有效,则只会设置第一个字段。
4) 不是错误,但为什么你在 NSApplicationDelegate
而不是 viewController 中执行所有这些操作?
不,你不能那样做,因为你不能为不同的文本字段创建一系列字符串值。
您可以制作一个包含三个字段的数组并枚举:
@IBAction func applyButton(sender: AnyObject) {
for field in [visibleText1, visibleText2, visibleText3] {
field.stringValue = inputField.stringValue
}
inputField.stringValue = ""
}
或使用forEach
函数
@IBAction func applyButton(sender: AnyObject) {
[visibleText1, visibleText2, visibleText3].forEach {
[=11=].stringValue = inputField.stringValue
}
inputField.stringValue = ""
}
在重复循环中重置 inputField
将始终在第一次迭代后应用空字符串。
我想通过按下按钮将字符串值从一个 NSTextField
传递到另一个 NSTextField
。我用这个for-in loop
。我需要将值从 inputField
传递到 visibleText1
,然后传递到 visibleText2
,再传递到 visibleText3
。但是没用。
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var inputField: NSTextField!
@IBOutlet weak var visibleText1: NSTextField!
@IBOutlet weak var visibleText2: NSTextField!
@IBOutlet weak var visibleText3: NSTextField!
func applicationDidFinishLaunching(aNotification: NSNotification) { }
func applicationWillTerminate(aNotification: NSNotification) { }
@IBAction func applyButton(sender: AnyObject) {
for u in (visibleText1.stringValue...visibleText3.stringValue) {
visibleText.stringValue[u] = inputField.stringValue
inputField.stringValue = ""
}
}
}
Xcode 给我一个错误:
// Type 'ClosedInterval<String>' does not conform to protocol 'SequenceType'
怎么做才对?
这有几处错误,但我将从将起作用的地方开始:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var inputField: NSTextField!
@IBOutlet weak var visibleText1: NSTextField!
@IBOutlet weak var visibleText2: NSTextField!
@IBOutlet weak var visibleText3: NSTextField!
func applicationDidFinishLaunching(aNotification: NSNotification) { }
func applicationWillTerminate(aNotification: NSNotification) { }
@IBAction func applyButton(sender: AnyObject) {
for u in [visibleText1, visibleText2, visibleText3] {
u.stringValue = inputField.stringValue
}
}
}
那么原版有什么问题?
1) 您的 (visibleText1.stringValue...visibleText3.stringValue)
是 String ... String
类型,这不是您想要的。您需要有一个 NSTextField
数组。
2) visibleText.stringValue[u]
甚至都不是东西。没有变量 visibleString
,即使它是一个 NSTextField
- 我认为这是你想要的,它的 .stringValue
是一个 String
,而不是一个数组。
3) 你在 for 循环中设置 inputField.stringValue = ""
做什么?如果您的构造有效,则只会设置第一个字段。
4) 不是错误,但为什么你在 NSApplicationDelegate
而不是 viewController 中执行所有这些操作?
不,你不能那样做,因为你不能为不同的文本字段创建一系列字符串值。
您可以制作一个包含三个字段的数组并枚举:
@IBAction func applyButton(sender: AnyObject) {
for field in [visibleText1, visibleText2, visibleText3] {
field.stringValue = inputField.stringValue
}
inputField.stringValue = ""
}
或使用forEach
函数
@IBAction func applyButton(sender: AnyObject) {
[visibleText1, visibleText2, visibleText3].forEach {
[=11=].stringValue = inputField.stringValue
}
inputField.stringValue = ""
}
在重复循环中重置 inputField
将始终在第一次迭代后应用空字符串。