2016-09-05 8 views
1

У меня есть текстовая метка (NSTextField). Я хочу, чтобы он привязывался к верхней левой вершине каждого объекта, чтобы показать номер элемента в пользовательском интерфейсе. Но мой ярлык показывает только ZERO и не перемещается (он остается в верхнем левом углу). Что я сделал не так?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] } 

туАггау содержит cgpoints.

Я правильно вставляю параметры метки внутри applicationDidFinishLaunching способ?

ответ

1

Вы пытаетесь обновить NSTextField, вероятно, из-за неправильного потока.

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

Try исследовать Ты массив я мог сделать предположение о том, что когда вы устанавливаете значение метки localArray.count равно 0. Кроме того, имейте в виду, что вы работаете с Int и если localArray.count это 3 так 3/4 будет 0. 0.

+0

Я пробовал. Это не работает. –

+0

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

+0

я обновить мой ответ –