Я чувствую себя плохо, задавая три вопроса в течение двух дней, но я застрял и ищу форум, я не мог найти ответ, поэтому я надеюсь, что кто-то может мне помочь - все это часть удовольствия от обучения, я полагаю!
В моей программе есть три представления, которые идут в порядке GridScreen -> GameScreen -> CorrectScreen. На CorrectScreen у меня есть кнопка, которая возвращается к GridScreen.
На GridScreen у меня есть куча кнопок, которые пользователь может нажать, чтобы перейти к GameScreen. Когда пользователь правильно отвечает на вопрос, он перемещается с GameScreen на CorrectScreen для подтверждения, а затем обратно на GridScreen.
В предыдущем вопросе я спрашивал, как отследить кнопку, которая была нажата на GridScreen, чтобы, когда я вернусь к ней с CorrectScreen, я мог заменить значок на галочку. Это было решено ранее, но тем самым я создал еще одну проблему.
В CorrectScreen, когда пользователь нажимает кнопку для возврата, вызываются следующие две функции:
[self.gridScreen updateUserIcon:buttonThatWasPressed];
[self.gridScreen updatePoints:accumulatedpoints];
где updateUserIcon:
-(void)updateUserIcon:(UIButton *)button
{
UIButton *buttonPressed = button;
self.button1 = buttonPressed;
[self.button1 setImage:[UIImage imageNamed:@"tick.png"] forState:UIControlStateNormal];
}
и updatePoints:
-(void)updatePoints:(int)points
{
self.currentPoints.text = [[NSString alloc]initWithFormat:@"Current points: %d", points];
}
где button1 — это UIButton, а currentPoints — это UILabel.
Теперь, когда я возвращаюсь к GridScreen, используя следующий код после вызова двух функций, галочка появляется на нужной мне кнопке, но метка не обновляется правильно: ПЕРВЫЙ СЛУЧАЙ:
[[[self presentingViewController]presentingViewController] dismissModalViewControllerAnimated:YES];
тогда как, если я использую этот следующий способ, галочка вообще не появляется, но метка обновляется идеально: ВТОРОЙ СЛУЧАЙ:
GridScreen *screen = [[GridScreen alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:screen animated:YES];
(Я обычно загружаю представления, используя второй случай).
В первом случае, даже если бы я сделал следующий код:
-(void)updatePoints:(int)points
{
self.currentPoints.text = @"A";
NSLog(@"Current Points %@", self.currentPoints.text);
}
Мой NSLog возвращает текущие точки (ноль).
Решение связано с моим первым методом возврата к GridScreen. Я на самом деле не загружаю представление снова, но во втором методе я это делаю, но я не могу понять, что мне нужно сделать, чтобы правильно обновить оценку и клещ.
Если кто-нибудь может помочь, я хотел бы знать - я новичок в программировании на Objective-C, поэтому, если что-то из этого является "плохим кодом", я буду рад узнать, что не так, поэтому в будущем я не делаю подобных ошибок.
Еще раз спасибо всем вам, этот сайт отлично помогает, и заранее я ценю советы.
Энди.
viewDidLoad
), поэтомуcurrentPoints
является нулевым объектом. - person Michael Dautermann   schedule 04.06.2012