В моя GameViewController
клас имам този метод displayWinScreen
, който получава текущия номер на ниво и го съхранява в публично свойство в моя WinViewController
клас, наречено levelCompleted
. След това изпълнява този метод, наречен runPushAnimationWithController:
, който просто избутва обекта WinViewController
в UINavigation стека.
- (void)displayWinScreen {
WinViewController *winViewController = [[WinViewController alloc] initWithNibName:@"WinViewController"
bundle:nil];
winViewController.levelCompleted = self.levelNumber;
[self runPushAnimationWithController:winViewController];
}
След това в WinViewController
зададох бутон, който при натискане на iPhone извиква този метод:
-(IBAction)nextLevelSelection:(id)sender {
int num = [self.levelCompleted integerValue];
int newNum = num + 2;
self.levelCompleted = [NSNumber numberWithInteger:newNum];
GameViewController* nextLevelViewController = [[GameViewController alloc]
initWithNibName:@"GameViewController"
bundle:nil];
nextLevelViewController.levelNumber = self.levelCompleted;
[self runPushAnimationWithController:nextLevelViewController];
}
Този метод просто увеличава стойността на това свойство и го съхранява в GameViewController
свойството levelNumber
. Когато поставя точка на прекъсване, за да видя дали това int число се предава, всичко се проверява. Ако първоначално съм играл ниво 3, числото, което в крайна сметка е nextLevelViewController.levelNumber
, е 4. Игнорирайте num + 2
, както съм го настроил, int стойността все още ще увеличи нивото с 1.
Използвам същия процес на предаване на int свойства за всичките си други UINavigationController методи и всичко е наред. С изключение на това. Трябва ли да извадя контролера или да използвам друга техника за преход на контролера за изглед?
Ето изскачащия метод, който използвам, за да се върна към GameViewController
от WinViewController
.
-(void)runPopperAnimation:(UIViewController*)viewController {
CATransition *transition = [CATransition animation];
transition.duration = 0.30f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController popToViewController:viewController animated:NO];
}
levelCompleted
отWinViewController
обратно къмGameViewController
? - person Frank   schedule 18.06.2016