我想按一个按钮将字符串值从一个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'
该怎么做?
答案 0 :(得分:3)
不可以,因为您无法创建不同文本字段的字符串值范围。
您可以创建三个字段的数组并枚举:
@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 {
$0.stringValue = inputField.stringValue
}
inputField.stringValue = ""
}
重复循环中重置inputField
将始终在第一次迭代后应用空字符串。
答案 1 :(得分:1)
这有几个问题,但我会从将的工作开始:
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
s的数组。
2)visibleText.stringValue[u]
甚至都不是。没有变量visibleString
,即使它是NSTextField
- 我认为这是你想要的变量,它的.stringValue
是String
,而不是数组。
3)你在for循环中设置inputField.stringValue = ""
是做什么的?如果您的构造有效,则只会设置第一个字段。
4)不是错误,但为什么你在NSApplicationDelegate
内而不是一个viewController进行所有这些?