Frage an interface-builder, cocoa – NSTableView mit Plus- und Minus-Tasten

20

Wie kann ich so etwas machen?

Ich habe in der Interface Builder-Bibliothek kein passendes Objekt gefunden.

Irgendwelche Gedanken?

Deine Antwort

4   die antwort
8

und verwenden Sie für die Bilder die vom System bereitgestellten NSAddTemplate und NSRemoveTemplate.

Schön, aber wenn Sie mehrere Verlaufsschaltflächen verwenden, wird das Erscheinungsbild durch Deaktivieren einer davon beeinträchtigt. Die segmentierte Steuerung funktioniert hier besser, da durch Deaktivieren eines einzelnen Segments nur der Text oder das Bild abgeblendet wird, der Hintergrund jedoch nicht geändert wird. Mecki
3

Verlaufsschaltflächen zu verwenden. Diese Schaltflächen können jedoch nicht deaktiviert werden, da sich dadurch der Hintergrund ändert und das Erscheinungsbild unterbrochen wird. Ein anderes schlug vor, ein segmentiertes Steuerelement zu verwenden, das nahezu perfekt ist, aber segmentierte Steuerelemente unterstützen keine automatische Größenänderung, z. wenn die Tabellenbreite dynamisch ist. Mein Vorschlag ist eine Kombination aus beiden. Verwenden Sie ein segmentiertes Steuerelement für die tatsächlichen Schaltflächen und eine Verlaufsschaltfläche, um den Rest der Tabellenbreite auszufüllen, die jetzt auch dynamisch sein kann, wenn die Schaltflächenbreite ebenfalls dynamisch ist.

Siehe meine Antwort auf eine ähnliche Frage (mit Screenshots):https://stackoverflow.com/a/22586314/15809

8

Update für OSX Yosemite

Ich habe versucht, das gleiche Aussehen wie bei Mail.app in der Kontenansicht zu erzielen (rechtes Fenster in meinem Screenshot).

Ich habe das gewünschte Ergebnis mit den folgenden Schritten erzielt:

Füge hinzu einNSSegmentedControlFügen Sie zwei Segmente hinzu und legen Sie das Bild für jedes fest:NSAddTemplate für die+ TasteNSRemoveTemplate für die- TasteStellen Sie die Größe der Segmente auf einfixed und setzen Sie den Wert auf32 PixelDas Rechteck neben den Schaltflächen ist aNSButton mit dem StilGradient.Der Button ist aber freigeschaltetVerweigert Ersthelfer ist eingestellt auftrue damit es nicht anklickbar ist.

34

den ich gefunden habe, ist die Verwendung von NSSegmentedControl.

Nachdem Sie es auf die Leinwand gezogen haben, sollten Sie seinen Stil konfigurieren:

Style: Small Square
Mode:  Select Momentary

sieht besser aus. Verwenden Sie nun das Feld "Bild" zum EinstellenNSAddTemplate undNSRemoveTemplate. Stellen Sie sicher, dass das Beschriftungsfeld leer ist.

Ok, wir haben "+","-"und ein leeres Segment. Um zu verhindern, dass das letzte vom Benutzer ausgewählt wird, wählen Sie es ausSegment: Pop-up und ausschaltenaktiviert Kontrollkästchen (befindet sich nebenZustand: Etikette).

Und zuletzt müssen wir uns festlegenBreite der ersten beiden Segmente, um sie quadratisch zu machen.

Gehe zuGrößeninspektorWählenSegment 0Abschalten "Fest"Ankreuzfeld (Segment sollte sofort automatisch an das Bild angepasst werden)WählenSegment 1 und wiederhole Nummer 3Wenn Sie jetzt die Größe ändern, ändert nur das letzte Segment die BreitePlatzieren Sie es am unteren Rand Ihrer Tabellenansicht und ändern Sie auch die Größe.

Genießen ;)

@bithavoc, ich bin nicht mehr bei XCode / Cocoa und so. Fühlen Sie sich frei, die Antwort zu bearbeiten. ratijas
Das gefällt mir besser als die akzeptierte Antwort, weil es alles zusammenhält und ich das dritte Segment deaktivieren kann, ohne sein Aussehen zu ändern. Aber wie gehen Sie mit der Größenänderung eines Fensters um, das das Steuerelement streckt? JeremyP
Zu Ihrer Information, es heißt nicht mehr Mode SelectNone aberMomentary bithavoc
Ich habe es in einem nicht skalierbaren Teil des Fensters verwendet. aber wie ich weiß, ist es wirklich schwierig, die Größe zu ändern. Wenn Sie das erreichen, lassen Sie es mich wissen, indem Sie eine andere Antwort posten, und ich werde für Sie stimmen. ratijas
@ JeremyP Siehe den zweiten Teil der Antwortstackoverflow.com/a/22586314/15809 ; Sie können ein segmentiertes Steuerelement mit einem NSButton mischen, um das ideale Erscheinungsbild, Verhalten und automatische Größenänderung zu erzielen. Mecki

Verwandte Fragen