ASObjC: Actions (sender)

Actions sind der nächste Schritt um ASOC Programme zu schreiben. Outlets schaffen die Möglichkeit aus dem Programmcode auf UI Elemente zuzugreifen.

Actions im Gegenzug rufen Methoden auf die bei einem UI Ereignis z.B. ein Klick auf einen Button ausgelöst werden.

Diese werden wie folgt in der Klasse definiert:

-- controller.applescript
-- asoc_01

-- Created by Christian Sonntag on 11.04.10.
-- Copyright 2010 __MyCompanyName__. All rights reserved.

script controller
  property parent : class "NSObject"

  --Outlet
  property textField : missing value

  --Action
  on doSomething_(sender)
  end doSomething_

end script

asoc_action_001

So, ab in den Interface Builder. Aus der Library wird ein NSButton unserer Wahl ins Fenster gezogen, positioniert, angepasst und mit einem schönen Namen versehen.

asoc_action_002

Nun muss dem Button auch eine Action aus der Klasse zugewiesen werden. Mit gedrückter rechter Maustaste ziehen wir eine Verbindung von dem Controller Objekt auf den neu positionierten NSButton und lassen die rechte Maustaste los.

asoc_action_003

Auch hier erscheint wieder ein kleines schwarzes Fenster das alle vorhandenen Methoden aus der Klasse anzeigt. Hier wählen wir „doSomething“ aus.

asoc_action_004

Zum Abschluss kann alles natürlich noch mal geprüft werden. Bei ausgewähltem NSButton schauen wir nun im Inspector im vorletzten Reiter unter „Sent Actions“, und siehe da dort ist „doSomething“ zu sehen.

So jetzt hauchen wir dem ganzen noch etwas Leben ein, siehe unten. Denn nach dem kompilieren passiert nämlich gar nix. Als Beispiel lassen wir nun einen Warnton ausgeben, eine Variable wird hoch gezählen, die im Anschluss mit einem „Hello World!“ im NSTextField ausgegeben wird.

Fürs erste sind die wichtigsten Basics erklärt auf die man weiter aufbauen kann.

-- controller.applescript
-- asoc_01

-- Created by Christian Sonntag on 11.04.10.
-- Copyright 2010 __MyCompanyName__. All rights reserved.

script controller
  property parent : class "NSObject"

  property |count| : 1

  --Outlet
  property textField : missing value

  --Action
  on doSomething_(sender)
    beep
    textField's setStringValue_("Hello World! (" & |count| & ")")
    set my |count| to (my |count|) + 1
  end doSomething_

end script

[wpdm_file id=10]

Schreibe einen Kommentar