Wie kann NSSLIDER so angepasst werden, dass sie eine nichtlineare Skala im Kakao bereitstellen?

StackOverflow https://stackoverflow.com/questions/5810753

  •  25-10-2019
  •  | 
  •  

Frage

Wie kann NSSLIDER so angepasst werden, dass sie eine nichtlineare Skala im Kakao bereitstellen? dh - 0, 2, 4, 6, 10.

Ich möchte, dass der Schieberegler nur auf Tick -Markierungen anhält, und möchte, dass der Schieberegler bei 0, 2, 4, 6, 10 (und nicht 8 beispielsweise 8) anhält. Vielen Dank.

War es hilfreich?

Lösung

Schnell geschriebenes Beispiel basierend auf einem Array mit den gewünschten Werten:

SampleAppdelegate.h

#import <Cocoa/Cocoa.h>

@interface SampleAppDelegate : NSObject <NSApplicationDelegate> {

    NSWindow * window;
    NSArray * values;

    IBOutlet NSSlider * theSlider;
    IBOutlet NSTextField * theLabel;

}

- (IBAction)sliderChanged:(id)sender;

@property (assign) IBOutlet NSWindow *window;

@end

SampleAppdelegate.h

#import "SampleAppDelegate.h"

@implementation SampleAppDelegate

@synthesize window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    values = [[NSArray alloc] initWithObjects:@"0",@"1",@"2",@"10",@"50",nil];

    [theSlider setNumberOfTickMarks:[values count]];
    [theSlider setMinValue:0];
    [theSlider setMaxValue:[values count]-1];
    [theSlider setAllowsTickMarkValuesOnly:YES];

    [theLabel setStringValue:[values objectAtIndex:0]];
    [theSlider setIntValue:0];


}

- (IBAction)sliderChanged:(id)sender {

    int current = lroundf([theSlider floatValue]);
    [theLabel setStringValue:[values objectAtIndex:current]];

}

@end

Schnittstellenbauer:
- NSSLIDER hinzufügen (Verbinden Sie Iboutlet / Verbinden Sie Ibaction / Aktivieren Sie die Kontinuos -Aktualisierung).
- Fügen Sie nStextfield hinzu (verbinden Sie Iboutlet)

Ergebnis:

enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top