Label aktualisieren in Swift

Vamogu

Mitglied
Thread Starter
Dabei seit
17.05.2015
Beiträge
4
Reaktionspunkte
0
Hallo liebe Swift-Experten!

Ich beginne eben, mir Swift anzueignen und habe folgendes Problem:
Zum Test wollte ich in einer View über einen Button eine For-Schleife starten, die eine Variable aufwärts zählt und den Variableninhalt in einem Label ausgibt:
import Cocoa

class ViewController: NSViewController {
@IBOutlet weak var Ausgabe: NSTextField!
@IBAction func Start(sender: AnyObject) {
var i: Int
for i=1; i<=10000; ++i {
Ausgabe.stringValue = String (i)
}
}

Nach Drücken des Buttons "Start" erhalte ich allerdings nur den letzten Wert von i, nämlich 10000.
Ich komme von Delphi wo es ähnlich ist, aber da hat man die Möglichkeit mit Application.ProcessMessages() die Kontrolle an das OS zu übergeben und schon wird das Label aktualisiert. Wie macht man das in Swift?
Ich habe schon viel im Internet gesucht, finde immer wieder Dispatch_async und komme damit aber nicht klar.
Kann mir jemand zeigen wie man das in Swift macht?

Lg
 
Nach Drücken des Buttons "Start" erhalte ich allerdings nur den letzten Wert von i, nämlich 10000.
Ich komme von Delphi wo es ähnlich ist, aber da hat man die Möglichkeit mit Application.ProcessMessages() die Kontrolle an das OS zu übergeben und schon wird das Label aktualisiert. Wie macht man das in Swift?
am einfachsten für den Moment vielleicht so, nach jedem Setzen eines neuen Wertes. Die Anzeige wird dann automatisch aktualisiert:

Code:
repeat {
  guard let nextEvent = NSApp.nextEventMatchingMask(NSIntegerMax, untilDate: nil, inMode: NSEventTrackingRunLoopMode, dequeue: true) else {break}
  NSApp.sendEvent(nextEvent)
} while true
 
Zuletzt bearbeitet:
am einfachsten für den Moment vielleicht so, nach jedem Setzen eines neuen Wertes. Die Anzeige wird dann automatisch aktualisiert:

Code:
repeat {
  guard let nextEvent = NSApp.nextEventMatchingMask(NSIntegerMax, untilDate: nil, inMode: NSEventTrackingRunLoopMode, dequeue: true) else {break}
  NSApp.sendEvent(nextEvent)
} while true
Vielen Dank für das Beispiel. Funktioniert so wie gewollt. Nur verstehe ich nicht was hier eigentlich gemacht wird. Kannst Du mir diese Zeile mal näher erklären, bitte?

Lg
 
Zurück
Oben Unten