Kurztipp - NSDrawer (ObjC, Cocoa)

From macwrench
Jump to navigation Jump to search

NSDrawer erstellen

Die Schubladen an Fenstern (Drawer) via NSDrawer) können wie folgt erstellt werden:

  1. das entsprechende .nib im IB (Interface Builder) öffnen
  2. im IB (Palette "Windows") den Drawer aufs Hauptfenster ziehen (zu "Instances")
  3. im IB eine NSView Instanz durch Drag'n'Drop aufs Hauptfenster erstellen (Palette "Container"). Hier komen dann die Inhalte der NSDrawer Instanz hinein.
  4. eine Verbindung von der Sidebar auf das entsprechende Fenster ziehen (an das der Drawer andocken soll) und mit dem Outlet "parentWindow" verknüpfen.
  5. eine Verbindung von der Sidebar auf die NSView ziehen und mit dem Outlet "ContentView" verknüpfen.

Methoden

Um den Drawer zu steuern, gibt es die folgenden Methoden (mehr Infos in der ObjC-Referenz der Apple-Dokumentationen):

  • (void)close
  • (void)close:(id)sender
  • (void)open
  • (void)open:(id)sender
  • (void)openOnEdge:(NSRectEdge)edge
  • (void)toggle:(id)sender

open öffnet die Schublade (wer hätts gedacht ... ,-) ), close schließt sie. toggle macht die Sache anhängig vom Status des Drawer (ein Button für beide Aktionen). im IB lässt sich das ganz einfach realisieren: einfach einen Button oder etwas äquivalentes in das Fenster ziehen und mit der action "toggle" der Sidebar verknüpfen.

NSDrawer mit einem NSToolbarItem steuern

Falls man aber die Sidebar aus eigenen Methoden heraus steuern will - z.B. über eine NSToolbar machen möchte, muss man vorher folgendes tun:

  • im Header-File (manuell) ein IBOutlet ezeugen, z.B. über:
    IBOutlet NSDrawer *mySidebar;
  • das Header-File speichern und aus Xcode heraus im IB auf das Hauptfenster (Tab "Classes") plumpsen lassen. Anschließend sollte man dort die Instanz zu Gesicht bekommen (Tab "Instances" -> File's Owner -> Outlets sollte nun das Outlet "mySidebar" enthalten)
  • jetzt noch im IB eine Verbindung von "File's Owner" auf den Drawer ziehen und mit dem Outlet "mySidebar" (oder wie man immer es auch genannt hat) verknüpfen.

Jetzt kann man im Code via

[mySidebar toggle:self];

den Drawer öffnen und schließen.

Weitere Infos

Infos zu NSToolbar