Zliczanie ilości kliknięć w przycisk Cocoa
#1
Napisano 06 czerwca 2013 - 20:53
#2
Napisano 06 czerwca 2013 - 20:56
#3
Napisano 07 czerwca 2013 - 00:20
-(void)mouseDown:(NSEvent*)theEvent { licznik++; [super mouseDown:theEvent]; }
do wartości odwołujesz się z poziomu tego obiektu zadeklarowanego w IB
#4
Napisano 07 czerwca 2013 - 08:50
#5
Napisano 07 czerwca 2013 - 17:00
#6
Napisano 07 czerwca 2013 - 22:43
Dodać obiekt do Interface Buildera, podłączyć akcję i wsio.
@interface AppController : NSObject @property (assign) NSInteger counter; - (IBAction)buttonClicked:(NSButton *)sender; @end @implementation AppController @synthesize counter = _counter; - (IBAction)buttonClicked:(NSButton *)sender { NSLog(@"%ld", ++self.counter); } @end
jak ma być więcej buttonów to wystarczy dodać NSDictionary, żeby trzymał te wartości.
@interface AppController : NSObject @property (nonatomic, strong) NSMutableDictionary *counter; - (IBAction)buttonClicked:(NSButton *)sender; @end @implementation AppController @synthesize counter = _counter; - (IBAction)buttonClicked:(NSButton *)sender { NSNumber *value = [self.counter objectForKey:sender.description]; if (value == nil) { value = [NSNumber numberWithInteger:0]; } value = [NSNumber numberWithInteger:value.integerValue+1]; [self.counter setObject:value forKey:sender.description]; NSLog(@"%@ %@", sender, value); } - (NSMutableDictionary *)counter { if (_counter == nil) { _counter = [[NSMutableDictionary alloc] init]; } return _counter; } @end
proste, eleganckie, wygodne. Cocoa
#7
Napisano 08 czerwca 2013 - 08:26
jak ma być więcej buttonów to wystarczy dodać NSDictionary, żeby trzymał te wartości.
A nie wystarczy zadeklarować czegoś takiego:
@property (strong, nonatomic) NSInteger counter;
Wtedy wartość zostaje przytrzymana i nie będzie zwolniona.
#8
Napisano 08 czerwca 2013 - 09:08
#9
Napisano 08 czerwca 2013 - 09:12
#10
Napisano 08 czerwca 2013 - 10:00
#11
Napisano 08 czerwca 2013 - 13:22
#12
Napisano 08 czerwca 2013 - 17:31
#13
Napisano 08 czerwca 2013 - 22:15
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych