Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Das Menü anpassen

Ein NSSpeechSynthesizer kann nicht nur Text in Sprache umwandeln, es ist sogar möglich, aus einem gegebenen Text eine Audiodatei zu erzeugen. Für diese Erweiterung werden Sie aber keine weiteres Objekt in der Werkzeugleiste hinzufügen, sondern einen Eintrag im Menü anlegen.
Jede Cocoa Anwendung hat automatisch ein Hauptmenü (MainMenu) und obwohl Sie sich bisher wenig darum gekümmert haben, ist es doch auch eines der Objekte, die Sie im Interface Builder bearbeiten können.

Entfernen Sie zuerst alle überflüssigen Einträge bis nur noch der Eintrag New Application übrig ist. Markieren Sie einfach einen Eintrag und drücken die Entfernen-Taste und der Menüeintrag samt seinen Unterpunkten verschwindet. Sie können einen Menüpunkt aber auch aus dem MainMenu herausziehen, um das selbe zu erreichen.
stacks_image_378142D6-6011-488D-80B9-478950FD9167
Neue Elemente für das Menü finden sie in der Steuerelementbibliothek. Natürlich akzeptiert ein Menu nicht beliebige Steuerelemente, sondern nur die, die dafür geeignet sind. Diese finden Sie aber recht schnell, wenn die im Suchfeld nsmenu eingeben.
stacks_image_5CC8A486-215E-49A2-B83A-458E17A38542
Wie Sie sehen, gibt es eine ganze Menge an Steuerelementen. Ein Großteil davon sind aber vorgefertigte Gruppen und für den Moment uninteressant.

Ziehen Sie zuerst ein NSMenuItem in das MainMenu. Es werden farbige Markierungen angezeigt, wo das neue Element eingefügt werden wird, sobald sie die Maustaste loslassen. Ist das NSMenuItem eingefügt, können Sie es nach einem Doppelklick darauf bearbeiten und den Text editieren. Beschriften Sie dieses Element mit: Datei.

Ziehen Sie anschließend ein NSMenu direkt auf das neu eingefügte NSMenuItem. Dieser Vorgang wird drei Unterpunkte hinzufügen. Löschen sie zwei davon und nennen Sie den verbleibenden Menupunkt: Sprache speichern.
stacks_image_5D29F846-BE9C-4BF1-8937-AE8AC28A92DE
NSMenuItem verhalten sich ähnlich wie Button und werden auch auf die gleiche Art und Weise im Interface Builder mit Action verbunden. Fügen Sie daher in Ihrer Controller-Klasse eine Methode hinzu.

In der Header-Datei wäre das:
-(IBAction)saveToFile:(id)sender;
In der Code-Datei begnügen wir uns vorübergehend mit einem NSBeep, um die Funktionsfähigkeit zu testen.
-(IBAction)saveToFile:(id)sender
{
    NSBeep();
}
Erstellen Sie anschließend die Verbindung zwischen Outlet und Menü und testen das Programm!

nächste Seite