2016-09-05 8 views
1

私はテキストラベル(NSTextField)を持っています。 UIの要素の番号を表示するために、すべてのオブジェクトの左上頂点に固定したいと思います。 しかし、私のラベルはゼロのみを表示し、移動しません(左上隅にあります)。私は何を間違えたの?ここでSwift:テキストラベルが更新されない

は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メソッド?

答えて

1

おそらく間違ったスレッドからNSTextFieldを更新しようとしています。

dispatch_async(dispatch_get_main_queue(),{ 
    label.stringValue = "\((localArray.count/4)+1)" 
}) 

あなたしている配列を調査しようと私はあなたがIntとし、localArray.countは3 SO 3/4意志であれば作業しているラベルlocalArray.countの値を設定したときに0をも念頭に置いておくことを前提を作ることができます0

+0

私はそれを試しました。動いていない。 –

+0

dispatch_async(dispatch_get_main_queue()、{ self.label.stringValue = "\(self.localArray.count/4)" }) –

+0

私は** dispatch_async(dispatch_get_main_queue()、{ 自己を置く場合、私は私の答えを更新し –

関連する問題