2013-01-22 3 views
0

퀴즈 애플 리케이션을위한 점수를 만들려고합니다. 점수는 내 페이지의 레이블이며 점수 레이블이있는 3 개의 다른 페이지를 사용합니다. 하나는 퀴즈이고 올바른 페이지와 잘못된 페이지입니다. 처음에는 퀴즈 페이지에서 레이블의 값을 0으로 설정했습니다. 그런 다음 정답을 선택하면 해당 페이지로 이동하여 점수를 업데이트합니다. 따라서 0부터 1이됩니다. 그러면 현재 1이라는 레이블이 붙은 질문 페이지로 돌아가고 대답이 다시 올 때 2로 업데이트되어야합니다. 내 문제는 내 레이블이 업데이트 된 것처럼 보일 수 없다는 것입니다. 점수는 0으로 시작한 다음 1을 더하고 그 후에 점수는 1로 고정됩니다. 여기에 제 코드가 있습니다. 나는 정말로 그것을 사용하고있는 논리에 문제가있어 모든 도움을 정말로 고맙게 생각합니다.득점 퀴즈 게임에서 객관적 -c

*이 질문 페이지

if(score.text == @"") 
{ 
    int i = 0; 
    strDefaultScore = [[NSString alloc] initWithFormat:@"%i", i]; 
    score.text = strDefaultScore; 
} 
else 
{ 
    CorrectPage *update = [[CorrectPage alloc] init]; 
    strDefaultScore = update.updateScore; 
    score.text = strDefaultScore; 
} 

그런 다음 여기에 내가 NSLog를 사용하여 두 페이지 strDefaultScore의 값을 확인 해봤 CorrectPage

QuestionPage *quiz = [[QuestionPage alloc]init]; 
int i = 1; 
int j = [quiz.strDefaultScore intValue]; 
int sum = i + j; 
updateScore = [[NSString alloc] initWithFormat:@"%i", sum]; 
currentScore.text = updateScore; 

내 코드의 모두는 이유입니다 0을 반환 내가 얻은 정답의 수와 상관없이 점수는 1 점입니다. 이 문제를 어떻게 해결합니까?

Objective-C 사용에 대한 지식이 거의 없으며 웹에서이 도움말을 검색하고 있지만 찾을 수 없으므로 솔직하게이 문제를 해결하는 방법을 모릅니다.

업데이트 : 나는 그것을 알아낼 수있었습니다. 버튼에 대한 이벤트 코드를 옮겨서 지금 이렇게 보입니다.

-(IBAction)btn1 { 
//Redirect to the next page 
CorrectPage *correct = [[CorrectPage alloc]initWithNibName:@"CorrectPage" bundle[NSBundle mainBundle]]; 
[self.navigationController pushViewController: correct animated:YES]; 

//Update the value of score  
int newScore = [score.text integerValue]; 
int sum = newScore + 1; 
updatedScore = [[NSString alloc]initWithFormat:@"%i", sum]; 
score.text = updatedScore; 

//Pass the value of new score on the next page 
[correct.currentScore setText: score.Text]; 
} 

저에게는 효과적 이었지만 제가 한 일은 하드 코드되어 모든 버튼 이벤트에 적용해야했습니다. 또한, 내가 한 일은 코딩이 어렵 기 때문에, 그 일을 더 잘 수행 할 수 있다고 확신합니다. else 조건이 코드에 밀접하게

+2

'업데이트'를 인스턴스화하지 않습니다. 변수를 선언하는 것은 객체를 할당하고 초기화하는 것과 동일하지 않습니다. '[[CorrectPage alloc] init]'을 호출하고 그 결과를'update'에 할당하십시오. 다른 스 니펫에있는'quiz' 변수와 같습니다. –

답변

1

봐는 : 그것은 모든 메시지에 응답 할 수 있도록

CorrectPage *update; 
strDefaultScore = update.updateScore; 
score.text = strDefaultScore; 

귀하의 update 객체가 초기화되지 않았습니다.

CorrectPage *update = [[CorrectPage alloc] init]; 

그러나 어떻게 든 updateScore 값을 설정해야합니다.

또한 QuestionPage *quiz;도 같은 문제가 있습니다.

+0

고마워, 방금 했어. 자, 말했듯이, 어떻게 든 updateScore의 값을 설정해야합니다. – user1597438

+0

이 updateScore 변수는 무엇입니까? 또한 이것이 도움이 되었다면 upvote – MCKapur

+0

updateScore는 현재 점수를 업데이트하는 CorrectPage의 문자열 변수입니다. 기본적으로 int = sum + i + j는 문자열로 변환되므로 점수 레이블의 텍스트로 설정할 수 있습니다. – user1597438