Ich versuche, einen NSPanel als Blatt zu zeigen. Ich mache naiv etwas in dieser Richtung:
%Vor% Aus irgendeinem Grund, der mir entgeht, funktioniert das nicht. Wenn dieser Teil des Codes aufgerufen wird, blinkt das Blatt vorübergehend (wegen der Nachricht autorelease
). Das Blatt wird niemals an Fenster angehängt.
Wenn mir jemand zeigen kann, wo ich weitere Informationen finden kann, wäre das sehr zu begrüßen.
Das hört sich nach einem klassischen Fall an, in dem das Feld "Sichtbar beim Start" für das Panel in IB aktiviert wurde. Mach das ab.
Ja, Sie müssen diesen Controller so lange besitzen, wie Sie möchten, dass er weiterhin funktioniert. Sie können es nicht einfach erstellen, es automatisch freigeben und es sterben lassen - Sie müssen es so lange halten, wie Sie es brauchen.
Vergessen Sie nicht, dass Sie, wenn Sie versuchen, dies als "modales" Blatt auszuführen (d. h. es übernimmt die App, bis der Benutzer es entlässt), müssen Sie eine neue Laufschleife schieben.
Was Sie getan haben, wird das Blatt gezeigt, und dann nicht eine neue Schleife geschoben, so dass das OS nur das Blatt zeigt, sieht es keinen Grund, es zu halten, und so schließt es und nimmt die Ausführung in der nächsten Zeile wieder auf :
Normalerweise mache ich Blätter wie folgt:
%Vor%Dann, in Ihrer akzeptieren und / oder Abbrechen-Schaltfläche Routinen:
%Vor%Ich bin mir sicher, dass es eine etwas weniger Code-ähnliche Vorgehensweise gibt, aber ich habe mich nicht tief in sie hineinversetzt, weil dieser Weg bis jetzt vollkommen in Ordnung ist ...
Vorhergehende Kommentare zur Lebensdauer der Controller- und Panel-Objekte sind ebenfalls relevant - stellen Sie sicher, dass Sie genau wissen, welche Objekte Sie für welche Lebensdauern benötigen, wenn Sie ein modales Panel anzeigen.
Tags und Links objective-c cocoa nswindow cocoa-sheet