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
Wir erweitern nun wieder unser Beispiel um ein weiteres Label und ein Textfield.
Wieder ziehen wir mit gedrückter rechten Maustaste vom NSObject Controller eine Verbindung zum neuen Textfeld.
Nach dem loslassen der Maustaste wird wieder das kleine graue Fenster angezeigt. In diesem Fall wählen wir nun das Outlet „textfieldToChange“.
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.
Wieder erscheint die Auswahl der vorhandenen Methoden und wir wählen „somethingsChanged“.
[wpdm_file id=12]




