2017-07-09 3 views
1

Ich mag wäre zu fragen, warum möglich ist, einen Übergang von Art popover oder sheet von einer Taste auf ein NSWindow oder NSView durch Sie ziehen können nicht aus einem Symbolleiste Elemente zu erstellen?macOS, Segue Art popover nicht aus Toolbar erlaubt

Aus einer Symbolleiste kann nur Art: show, Modal und benutzerdefinierte

Antwort

0

Während ich bin nicht wirklich sicher, warum dies durch Ziehen im Interface Builder nicht möglich ist, können Sie immer noch eine popover manuell mit dem Ziel präsentieren/Aktionsmechanismus. Ihre Symbolleistenschaltfläche ruft eine Aktion wie presentFooPopover(:) auf, die NSViewController 's presentViewController(_ viewController: NSViewController, asPopoverRelativeTo positioningRect: NSRect, of positioningView: NSView, preferredEdge: NSRectEdge, behavior: NSPopover.Behavior) ruft, um den Zielansichtcontroller des Popover von einer bestimmten Position in einer Ansicht darzustellen.

Der präsentierende View-Controller (auf dem Sie presentViewController... aufrufen) muss nicht die Ansicht besitzen, die Sie für die Positionierung verwenden. Beachten Sie auch, dass die positioningRect im Koordinatensystem positioningView sein muss, daher wird normalerweise bounds der Ansicht verwendet.

Wenn Sie all dies zusammenfügen, können Sie die Schaltfläche (sender in Ihrer Aktion) als Positionierungsansicht übergeben und ihre Grenzen verwenden. Der View-Controller, der für die Präsentation des Popover verantwortlich ist, könnte Ihr Fenster-Controller oder der Content-View-Controller Ihres Fensters sein (oder wirklich alles, was nicht verschwindet, solange das Popover noch angezeigt wird, was auch das Popover verwerfen würde).