Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
ToDo-Detailansicht

Der NSTableView zeigt bisher nur einige, und nicht alle, Eigenschaften einer Aufgabe an. Um aber mit der Anwendung arbeiten zu können, ist es nötig, alle Felder zu sehen und diese auch bearbeiten zu können. Was dem Programm fehlt, ist eine Detailansicht wie sie in der folgenden Abbildung zu sehen ist. Als Steuerelemente werden nur Textfelder und Label verwendet. Das Textfeld für die Notiz ist allerdings ein Wrapping Text Field, damit auch mehr als eine Zeile Text angezeigt werden kann.
stacks_image_63C0717F-BFA0-40A3-9902-AF3244CB7AED
Auch die Textfelder müssen mit dem ArrayController verbunden werden. Das funktioniert wie beim dem NSTableView über die Binding-Einstellungen im Inspector. Der einzige Unterschied ist, dass ein Textfeld nur immer das in der Tabelle ausgewählte Objekt anzeigen soll, daher müssen Sie im Inspector selection als Controller Key wählen. Für die Tabelle war diese Einstellung noch arrangedObjects.
Unter selection, als die Selektion oder Auswahl, versteht man die Aufgabe, die in der Tabelle ausgewählt ist. Das selektierte Objekt wird dann automatisch mit der Detailansicht synchron gehalten.
Binden Sie zuerst nur ein Textfeld, die Überschrift, um die nötigen Arbeitsschritte zu verinnerlichen.
stacks_image_8FE6FA02-2844-44D9-8885-158E98FB75DF
Wenn Sie jetzt das Programm ausführen und eine neue Aufgabe hinzufügen, erscheint die Überschrift nicht nur in der Tabelle, sondern auch im zugehörigen Textfeld. Sie können dieses Textfeld sogar bearbeiten und die Überschrift ändern. Sobald Sie das Textfeld mit der Tab-Taste verlassen oder die Eingabe mit Return bestätigen, wird auch der die Überschrift in der Tabelle aktualisiert.
stacks_image_F120EE00-C6DF-44CD-8772-F5DF09EC1702
Binden Sie jetzt auch die restlichen Eigenschaften der Klasse an die verbleibenden Textfelder.

Ist kein Objekt in der Tabelle vorhanden, kann auch kein Eintrag ausgewählt sein. Das ist in diesem konkreten Fall ungünstig, da die Bindung von der Auswahl (selection) abhängig ist. Das ist aber nicht weiter schlimm, denn die Textfelder zeigen automatisch den Text „No Selection“ in grauer Schrift an.

Dieser Text ist der so genannte No Selection Placeholder, eine Eigenschaft, die mit dem Inspector geändert werden kann. Wenn Sie mögen, können Sie den Platzhalter auf „Keine Auswahl“ ändern. Als Alternative können Sie aber auch ein Leerzeichen eingeben, wenn bei einer fehlenden Auswahl nichts angezeigt werden soll.
stacks_image_C7B31766-0A37-4976-A35F-CB45F6792019