Получение переменных из одного представления в другое - PullRequest
1 голос
/ 19 апреля 2011

Я понимаю, что есть и другие подобные темы, но ни одна из них не помогает. Я пытаюсь получить переменные из одного представления в другое, но я абсолютно не знаю, как.

Чтобы дать некоторую предысторию, моя игра - игра, похожая на фруктового ниндзя, где на экране появляется что-то, и вы должны нарезать его. Если 3 спрайта оставляют экран незакрепленным, игра заканчивается, и она переходит на экран просмотра игры с кнопкой, чтобы вернуться назад. Кроме того, это ДОЛЖНО перейти к «flipSideView», который является рекордом, но моя реализация перехода flipSideView не работает. Это не главная проблема, основная проблема в том, что я не знаю, как получить счет из игры в mainView (который хранит его как int) в flipSideView (с именем игрока).

Основной вид изменяется на gameOverView через это условие в методе тиков (который выполняет регулярные проверки и методы для игры)

if (lifeCounter < 1) 
{
        gameIsOver = YES;
        [self showInfo:0];
        [self viewGameOverScreen];
}

Это относится к gameOverView, который будет находиться там до тех пор, пока не будет нажата кнопка воспроизведения:

- (IBAction)replayAction:(id)sender 
{
        [self.delegate gameOverViewControllerDidFinish: self];
}

gameOverViewControllerDidFinish перезапускает игру и закрывает вид.

- (void) gameOverViewControllerDidFinish: (GameOverViewController *) controller
{
        [self restart];
        [self dismissModalViewControllerAnimated: YES];
}

Метод перезапуска просто сбрасывает 3 основных значения в главном представлении (Оценка, уровень, количество жизней).

При перезапуске игра должна взять счет и любое имя, сохраненное в текстовом поле в flipSideView (который можно просмотреть в любой момент времени), и каким-то образом сохранить его для дальнейшего использования. Он еще не должен храниться в файле, потому что это задача следующей недели.

Я не хочу публиковать всю программу из-за проблем с плагиатом, но если есть дополнительные части, которые могут облегчить понимание, я обязательно опубликую их.

Заранее спасибо, Christian

Ответы [ 4 ]

2 голосов
/ 19 апреля 2011
1 голос
/ 19 апреля 2011

Предложение:

Вы можете поместить переменную в свой класс Controller, где они оба смогут получить доступ.

Всегда лучше иметь разделяемые данные в Controller, тогдапредставления, если данные должны быть разделены между представлениями.

Обновление совместно используемых данных с помощью метода делегата.

1 голос
/ 19 апреля 2011
NSUserDefaults *currentScore = [NSUserDefaults standardUserDefaults];
[currentDefaults setFloat:yourScoreVariable forKey:@"HighScore"];
[currentDefaults synchronize];  

выше, чтобы сохранить счет.Ниже, чтобы получить счет.

CGFloat fltHighScore;
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
fltHighScore = [currentDefaults floatForKey:@"HighScore"];
0 голосов
/ 19 апреля 2011

Для этого вы можете использовать свой делегат приложения.Вам необходимо объявить свою переменную там, а затем вы можете получить доступ к ней следующим образом во всем приложении:

TestAppDelegate * appDelegate = (TestAppDelegate *) [[UIApplication sharedApplication] делегат];NSString * string = [appDelegate.Placemarks objectForKey: appDelegate.title];

Не знаю, насколько это лучший способ ...

Удачи с этим!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...