2011-12-03 15 views
0

4つのボタンに4つの選択肢が割り当てられています。選択肢の一つは正しく、それは4つのボタンは、「アクション:@selector(submitAnswer :)」と呼んでiOSは2つの方法の間で文字列を受け取ります

を「correctAnswerString」という文字列に割り当てられている

私は、文字列にアクセスできるようにしたい「correctAnswerString」 「回答を提出する」メソッドで、正しい答えのボタンが押されたかどうかを比較します。

これは.hファイルに "@interface"を作成することによって行われると信じられていますが、その方法はわかりません。

多くのお手伝いがあります。

次のコードはありません:


- (void) loadAnswerChoice 
{ 

    int correctAnswer = 11; 

    int incorrectOne = 20; 

    int incorrectTwo = 5; 

    int incorrectThree = 8; 

    correctAnswerString = [NSString stringWithFormat:@"%d", correctAnswer] 

    [button1 setTitle:[NSString stringWithFormat:@"%d", incorrectOne] forState:UIControlStateNormal]; 
    [button1 addTarget:self action:@selector(submitAnswer:) forControlEvents:UIControlEventTouchUpInside]; 

    [button2 setTitle:[NSString stringWithFormat:@"%d", correctAnswer] forState:UIControlStateNormal]; 
    [button2 addTarget:self action:@selector(submitAnswer:) forControlEvents:UIControlEventTouchUpInside]; 

    [button3 setTitle:[NSString stringWithFormat:@"%d", incorrectTwo] forState:UIControlStateNormal]; 
    [button3 addTarget:self action:@selector(submitAnswer:) forControlEvents:UIControlEventTouchUpInside]; 

    [button4 setTitle:[NSString stringWithFormat:@"%d", incorrectThree] forState:UIControlStateNormal]; 
    [button4 addTarget:self action:@selector(submitAnswer:) forControlEvents:UIControlEventTouchUpInside]; 

} 

- (IBAction)submitAnswer:sender 
{ 

    NSString *answer = [sender titleLabel].text; 


    /* 
    if ([answer == correctAnswerStr]) { 
     //do something 
    } 
    else 
    { 
     //do something else 
    } 
    */ 


    [self performSelector:@selector(loadAnswerChoice) withObject:nil afterDelay:1]; 
} 

答えて

2

のみ再び比較に使用なしでクリック。 @selector(handleCorrectAnswer :)アクションを正しいボタンに、@selector(handleIncorrectAnswer :)アクションを他のものと結び付けてみませんか?あなたのコードのその時点で、正しいものとそうでないものが分かります。あなたは別の機能でそれをもう一度理解する必要があります。

また、あなたは些細な学習をしていると思います。これが本当のアプリだった場合は、質問と回答をデータ(ファイル、DBなど)として外部化し、それを処理するコードが汎用的であることを望みます。上のコードはかなりハードコードされていますが、単なる学習実験の場合は問題ありません。

また、ヘッダー(.h)の@interfaceについて尋ねました。そこでは、クラスのインターフェース(メソッドとプロパティの定義)を定義します。私の提案では、それはあなたが追加します意味:

@interface MyClass 

- (IBAction)handleCorrectAnswer:(id)sender; 
- (IBAction)handleIncorrectAnswer:(id)sender; 

次にあなたが

+0

私は実際にそれに私を打つbryanmacときにこれを入力して、あなたの.mに実装するだろう! – lnafziger

+0

優秀!ありがとう@bryanmac。それは、正解または誤答に基づいて異なる方法を呼び出すことを完璧に意味する。これは確かに学習の練習です。 – user885483

関連する問題