ASObjC: Actions (aNotification)

Bis jetzt haben wir alles durch Outlets, Actions und Bindings. Nur was ist zu tun wenn zum Beispiel der User den Wert eines Textfeldes öndert und wir darauf reagieren wollen?

Im Prinzip kann dies mit einer Action geschehen. Nur wird diese nicht mit (sender) definiert, sondern mit (aNotification). Siehe Methode somethingsChanged_(aNotification).

-- controller.applescript
-- asoc_03

-- 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
  property textFieldToChange : missing value

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

  on somethingsChanged_(aNotification)
    set temp to textFieldToChange's stringValue()
    set temp to temp as string
    display alert "textField changed to: " & return & temp
  end somethingsChanged_

end script

asoc_notification_001

Wir erweitern nun wieder unser Beispiel um ein weiteres Label und ein Textfield.

asoc_notification_002

Wieder ziehen wir mit gedrückter rechten Maustaste vom NSObject Controller eine Verbindung zum neuen Textfeld.

asoc_notification_003

Nach dem loslassen der Maustaste wird wieder das kleine graue Fenster angezeigt. In diesem Fall wählen wir nun das Outlet „textfieldToChange“.

asoc_notification_004

Nun muss für die Notification eine Verbindung zur Klasse hergestellt werden. Vom Textfeld ausgehend wird nun mit gedrückter rechten Maustaste eine Verbindung zum NSObject Controller definiert.

asoc_notification_005

Wieder erscheint die Auswahl der vorhandenen Methoden und wir wählen „somethingsChanged“.

[wpdm_file id=12]