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: 1
0 użytkowników, 1 gości, 0 anonimowych














