nssplitviewcontroller

___ tag123macos ___ macOS (früher bekannt als OS X oder Mac OS X) ist das Desktop-Betriebssystem von Apple, das auf Macintosh-Computern gefunden wurde. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Verwendung von macOS-APIs oder Mac OS-spezifischem Verhalten bezieht, nicht weil Sie Ihren Code auf macOS ausführen. Fragen zur Verwendung oder Fehlerbehebung von macOS sind off-topic. ___ tag123cocoa ___ Cocoa ist Apples Entwicklungsumgebung für MacOS, bestehend aus Foundation, Application Kit und Core Data. Verwenden Sie den "Kakao-Touch" -Tag für iOS-Fragen. ___ tag123nstabviewcontroller ___ NSTabViewController stellt ein abstraktes Ziel für die Inhaltsumschaltung dar ___ qstnhdr ___ Die auf NSSsplitViewController basierende Anwendung wird fast nie mit der richtigen Größe gestartet ___ tag123nsplitviewcontroller ___ NSSplitViewController ist ein View Controller, der in Interface Builder seit OS X 10.10 verfügbar ist und geteilte Ansichtselemente (NSSplitViewItem) enthält. ___ qstntxt ___

Ich habe diese App, die ein %code% als Root verwendet und ein %code% als detailViewController verbunden hat.

Diese App wird mit 1024 x 768 gestartet. Der linke Bereich sollte bei 320x768 und der rechte Bereich (wo der tabViewController ist) bei 704x768 starten.

Ab 10 Mal starte ich diese App, 9 Mal wird sie mit der falschen Größe gestartet (ca. 500x500). Andere seltsame Sache ist, dass diese App nicht skalierbar sein sollte, aber wenn Sie die Maus in der Nähe des Fensterrahmens bewegen, sehen Sie eine Cursor-Anzeige zum Skalieren.

Ich möchte, dass es in der richtigen Größe startet und keine skalierbare Option hat.

Diese beiden Einstellungen sind im Interface Builder enthalten, werden aber ignoriert.

Sie können hier ein Beispielprojekt herunterladen, das das Problem veranschaulicht, hier . Stoppen und führen Sie das Projekt mehrmals aus, um das Problem zu sehen.

Wie löse ich das?

    
___ answer28190642 ___

Ich kann nicht sicher sagen, was das Problem verursacht, aber eine Möglichkeit, es zu lösen, ist, einige Einschränkungen hinzuzufügen. Mit dem Interface Builder können Sie die Standard-NSView-Instanzen, die in das linke und das rechte Fenster der geteilten Ansicht eingefügt werden, nicht einschränken. Daher müssen Sie Ihre eigenen hinzufügen. Der Screenshot unten wird von deiner Demo genommen, aber nachdem ich folgendes gemacht habe:

  1. Eine Teilansicht wurde zum linken Teilbereich ( Meine Inhaltsansicht ) hinzugefügt und die Kanten an den Rändern der Superansicht angeheftet (die Ansicht Xcode wird automatisch zur Teilansicht hinzugefügt)
  2. Zu Meine Inhaltsansicht wurde eine explizite Breitenbeschränkung von 320 Pixeln hinzugefügt

Wenn ich die App lade, sind beide Splits sichtbar, der Teiler bewegt sich nicht und das Fenster kann nicht verkleinert werden.

Update - eine bessere Lösung

Obwohl Einschränkungen eine Möglichkeit darstellen, dieses Problem zu lösen, liegt der Grund des Problems in etwas unerwartetem Verhalten im Interface Builder. Wenn Sie ein Objekt %code% auf die Zeichenfläche ziehen und es zum Ziel der Beziehung %code% des Fenster-Controllers machen, wird der %code% outlet des Split-View-Controllers nicht tatsächlich gesetzt. Eine Konsequenz davon scheint zu sein, dass, wenn Sie die App laden, der Teiler direkt auf einer Seite erscheint. Um dies zu beheben, setzen Sie den oben genannten View-Ausgang so, dass er auf die Split-Ansicht zeigt:

Ich habe ein Demo-Projekt mit einem Setup erstellt, das dem in der Demo-App des Fragestellers ähnelt.

    
___
3
Antworten

NSToolbar in Xcode 7 mit Storyboards (NSWindowController - NSSsplitViewController)

Hi Ich habe diese Frage schon einige Male gesehen, aber noch keine definitive Antwort, also habe ich sie für xcode 7 und swift2 erstellt (was die Dinge vielleicht ein bisschen verändert hat). Ich habe ein Projekt mit den Storyboards Xcode 7 u...
24.06.2015, 10:00
1
Antwort

Die auf NSSsplitViewController basierende Anwendung wird fast nie mit der richtigen Größe gestartet

Ich habe diese App, die ein NSSplitViewController als Root verwendet und ein NSTabViewController als detailViewController verbunden hat. Diese App wird mit 1024 x 768 gestartet. Der linke Bereich sollte bei 320x768 und der rechte Bereic...
28.01.2015, 10:34