iOS передает строку между двумя методами - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть 4 варианта на 4 кнопки.Один из вариантов является правильным, и он присваивается строке "correctAnswerString"

4 кнопки вызывают "действие: @selector (submitAnswer :)"

Я хочу получить доступ кСтрока "correctAnswerString" в методе "отправить ответ" и сравните, была ли нажата кнопка с правильным ответом.

Я считаю, что это делается путем создания "@interface" в файле .h, но яне знаю как это сделать.

Большое спасибо за помощь.

Код ниже:


- (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];
}

1 Ответ

2 голосов
/ 03 декабря 2011

Не нажимайте, чтобы снова сравнивать.Почему бы не привязать действие @selector (handleCorrectAnswer :) к правильной кнопке, а действие @selector (handleIncorrectAnswer :) к другим?На этом этапе вашего кода вы знаете, какой из них правильный, а какой нет.Вы должны снова понять это с помощью другой функции.

Кроме того, я полагаю, вы выполняете тривиальное учебное упражнение.Если бы это было реальное приложение, вы бы хотели выводить вопросы и отвечать в виде данных (файл, БД и т. Д.), А код для их обработки был бы универсальным.Ваш код выше довольно жестко запрограммирован, но это хорошо, если это всего лишь учебный эксперимент.

Кроме того, вы спрашивали о @interface в заголовке (.h).Здесь вы определяете интерфейс (определения методов и свойств) для класса.В моем предложении это означает, что вы добавите:

@interface MyClass

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

Тогда вы добавите в свой .m

...