我有一个文本标签(NSTextField)。我希望它固定到每个对象的左上角,以在UI中显示元素的数字。 但我的标签只显示ZERO并且不移动(它停留在左上角)。我做错了什么?
这是我在AppDelegate.swift中的代码:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var drawingView: DrawingView!
@IBOutlet weak var label: NSTextField!
var localArray: [CGPoint] = []
func applicationDidFinishLaunching(aNotification: NSNotification) {
label.textColor = NSColor(calibratedRed: 0.15, green: 0, blue: 0.75, alpha: 0.3)
label.font! = NSFont(name: "Arial Bold", size: 60)!
label.backgroundColor = NSColor.clearColor()
label.stringValue = "\(localArray.count/4)"
for (pointIndex, _) in localArray.enumerate() {
let point = CGPoint(x: (localArray[(pointIndex/4)+1].x), y: (localArray[(pointIndex/4)+1].y))
label.sizeToFit()
label.frame = CGRect(origin: point, size: CGSize(width: label.bounds.width, height: label.bounds.height))
}
}
这是我在DrawingView.swift中的代码:
var delegate = NSApplication.sharedApplication().delegate as! AppDelegate
delegate.localArray = myArray.map { return $0.coordSequence()[0] }
myArray包含cgpoints。
我是否正确将标签参数放在 applicationDidFinishLaunching 方法中?
答案 0 :(得分:2)
您正在尝试从错误的线程更新NSTextField。
dispatch_async(dispatch_get_main_queue(),{
label.stringValue = "\((localArray.count/4)+1)"
})
尝试调查您的数组我可以假设当您设置标签localArray.count
的值为0.时还请记住,您正在使用Int
和{{1} }是3所以3/4将是0。