Wie kann NSSLIDER so angepasst werden, dass sie eine nichtlineare Skala im Kakao bereitstellen?
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.
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:
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow