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]