2016-05-03 8 views
0

Ich habe eine Pause IBAction & eine IBAction fortsetzen, sowohl für Tasten, aber ich habe Spielpunkte, die ich über die Dauer des Spiels sammeln. Wie kann ich die ganzzahligen Werte der verschiedenen Spielpunkte in der Pause speichern? IBAction & übergebe sie an die IBAction Methode.Speichern von Ganzzahlen in einer IBAction und Weitergabe an eine andere IBAction

HINWEIS: Die Pause IBAction macht alle NSTIMERS ungültig, und die IBAction-Fortsetzen erstellt sie neu.

+2

Shop es als Mitglied Variablen der Klasse, auf die die IBActions zugeordnet. Und lies ein Anfängerbuch über objektorientierte Programmierung. Es ist nicht sehr unhöflich, aber das ist sehr, sehr, sehr, sehr einfach und du wirst nicht sehr weit kommen, wenn du so etwas fragen musst, also tu dir selbst einen Gefallen und lies einleitende Tutorials. – Gruntcakes

+0

Können Sie ein Beispiel geben? – 1QuickQuestion

Antwort

1

gerade implementiert zu helfen, habe ich eine schnelle Lösung gefunden .... aber ich bin sicher, dass es eine sauberere Methode:

In die vc.h:

NSMutableArray storeVariables; 

im vc.m

int a, b, c, d; 
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
a=0; 
b=0; 
c=0; 
d=0; 
storeVariables = [[NSMutableArray alloc] init]; 
} 

-(IBAction)pauseButton:(id)sender{ 
a=3; 
b=4; 
c=5; 
d=6; 
[storeVariables addObject:[NSNumber numberWithInt:a]]; 
[storeVariables addObject:[NSNumber numberWithInt:b]]; 
[storeVariables addObject:[NSNumber numberWithInt:c]]; 
[storeVariables addObject:[NSNumber numberWithInt:d]]; 
NSLog(@"%d, %d, %d, %d", storeVariables[0], storeVariables[1], storeVariables[2], storeVariables[3]); 
} 

-(IBAction)resumeButton:(id)sender{ 
a = [storeVariables[0]]; 
b = [storeVariables[1]] 
c = [storeVariables[2]] 
d = [storeVariables[3]] 
NSLog(@"%d, %d, %d, %d", a, b, c, d); 
storeVariables = [[NSMutableArray alloc] init]; 
} 
+0

Großartig! Danke, das hat wirklich geholfen! Der einzige große Unterschied, den ich gemacht habe, war, das Array nicht zweimal zu instantiieren, sondern nur die alten Werte zu löschen! Das hat sehr geholfen! Ich füge meinen Code für jeden hinzu, der ihn in Zukunft möglicherweise benötigt – 1QuickQuestion

1

Eine IBAction ist Code. Es kann nichts speichern. Sie benötigen Zustand irgendwo wie eine Instanzvariable des Objekts zu speichern, die die IBAction

0

das ist, was funktioniert hat: .h File-

@interface ViewController2 : UIViewController{ 

    NSMutableArray *savedScoreData; 
    int PlayTimer; 
    int timeMinute; 
    int bonusPts; 
    int enemykill; 

} 

.m File-

- (void)viewDidLoad { 

    PlayTimer = 0; 
    timeMinute = 0; 
    bonusPts = 0; 
    timeMinute = 0; 

    savedScoreData = [[NSMutableArray alloc] init]; 
} 

- (IBAction)pauseButton:(id)sender { 
    NSLog(@"pause-before: %d, %d, %d,",PlayTimer,enemykill,bonusPts); 
    [GameTimer invalidate]; //this constantly changes the PlayTimer & timeMinute variables 
    [characterTimer invalidate]; 
    [enemyTimer invalidate]; //this constantly changes the enemyKill & bonusPts variables 
    [_bonusImgHolder removeFromSuperview]; 
    if([_soundEnable isEqualToString:@"YES"]){ 
     [_player2 pause]; 
    } 
    //NSLog(@"%tu",_player2.playing); 
    _resumeButton.hidden = NO; 
    _pauseButton.hidden = YES; 
    NSLog(@"pause-after: %d, %d, %d,",PlayTimer,enemykill,bonusPts); 
    //[sender num :PlayTimer]; 
    [savedScoreData addObject:[NSNumber numberWithInteger: PlayTimer]]; 
    [savedScoreData addObject:[NSNumber numberWithInteger: timeMinute]]; 
    [savedScoreData addObject:[NSNumber numberWithInteger: enemykill]]; 
    [savedScoreData addObject:[NSNumber numberWithInteger: bonusPts]]; 
    NSLog(@"%i", [savedScoreData[0] intValue]); 
    NSLog(@"%d", [savedScoreData[1] intValue]); 
    NSLog(@"%d", [savedScoreData[2] intValue]); 
    NSLog(@"%d", [savedScoreData[3] intValue]); 

} 
- (IBAction)resumeButton:(int)pauseButton{ 
    NSLog(@"resume-before: %d, %d, %d,",PlayTimer,enemykill,bonusPts); 
    PlayTimer = [savedScoreData[0] intValue]; 
    timeMinute = [savedScoreData[1] intValue]; 
    enemykill = [savedScoreData[2] intValue]; 
    bonusPts = [savedScoreData[3] intValue]; 
    NSLog(@"%d", (int)enemykill); 
    _resumeButton.hidden = YES; 
    _pauseButton.hidden = NO; 
    if([_soundEnable isEqualToString:@"YES"]){ 
     [_player2 play]; 
    } 
    GameTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(CollectPoints) userInfo:nil repeats:YES]; 
    characterTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(Jumping) userInfo:nil repeats:YES]; 
    enemyTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(enemyTravel) userInfo:nil repeats:YES]; 
    NSLog(@"resume-after: %d, %d, %d,",PlayTimer,enemykill,bonusPts); 
    [savedScoreData removeAllObjects]; 
}