В моем классе 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
. Когда я ставлю точку останова, чтобы увидеть, передается ли это целое число, все проверяется. Если я изначально играл на уровне 3, число, которое в конечном итоге будет nextLevelViewController.levelNumber
, равно 4. Игнорируйте num + 2
, как я его настроил, значение int по-прежнему будет увеличивать уровень на 1.
Я использую этот же процесс передачи свойств int для всех других моих методов UINavigationController, и все в порядке. Кроме этого. Должен ли я выталкивать контроллер или использовать другой метод для перехода контроллера представления?
Вот метод pop, который я использую, чтобы вернуться к 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