EDIT: Ребята, вы так здорово, спасибо за все ответы. Я решил пойти по пути stringByAppendingString, потому что он кажется самым простым, но по какой-то причине он не будет работать! Пожалуйста, извините меня, если это слишком noobish. Большое спасибо за поддержку!Как отслеживать порядок нажатия кнопок?
Вот кусок кода:
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupGame];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
int finalorder = 12;
- (IBAction)buttonPressed: (UIButton*) button {
if (button.tag == 1)
{
int order = 1;
}
if (button.tag == 2)
{
[order stringByAppendingString:@"2"];
}
if ([order isEqualToString:finalorder])
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wrong!"
message:[NSString stringWithFormat:@"Try again!"]
delegate:self
cancelButtonTitle:@"Try"
otherButtonTitles:nil];
[alert show];
};
}
// Оригинал quesiton: Мне очень жаль, так как я полный нуб и это нуб вопрос.
Я делаю свое первое приложение для iPhone, и я хочу, чтобы он был тренером по шкале - для людей, изучающих музыкальные шкалы. На экране есть одна октава фортепиано (12 кнопок, по одной для каждой клавиши), и я хочу, чтобы программа отслеживала порядок, в котором пользователь нажимает кнопки, чтобы узнать, помнит ли он порядок ключей в особый масштаб. Например, мы находимся в масштабе C, есть ключи: C, D, E, F, G, A, B. Если пользователь нажимает C, а затем D, он работает дальше. Но если пользователь нажимает C, а затем C#, должно появиться предупреждение: «Неверно! Попробуйте еще раз».
Кроме того, я хочу, чтобы имя каждой клавиши просматривалось в метке: если пользователь нажимает клавишу C, есть C и т. Д.
Итак, как мне отслеживать порядок прессования? Пока что я сделал следующий фрагмент кода, который показывает имя ключа и использует таймер. Большое спасибо за вашу помощь!
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupGame];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)buttonPressed: (UIButton*) button {
if (button.tag == 1)
{
waitinglabel.text = @"C";
}
else
{
[timer invalidate];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wrong!"
message:[NSString stringWithFormat:@"Try again!"]
delegate:self
cancelButtonTitle:@"Try"
otherButtonTitles:nil];
[alert show];
}
if (button.tag == 2)
{
waitinglabel.text = @"C#";
}
if (button.tag == 3)
{
waitinglabel.text = @"D";
}
if (button.tag == 4)
{
waitinglabel.text = @"D#";
}
if (button.tag == 5)
{
waitinglabel.text = @"E";
}
if (button.tag == 6)
{
waitinglabel.text = @"F";
}
if (button.tag == 7)
{
waitinglabel.text = @"F#";
}
if (button.tag == 8)
{
waitinglabel.text = @"G";
}
if (button.tag == 9)
{
waitinglabel.text = @"G#";
}
if (button.tag == 10)
{
waitinglabel.text = @"A";
}
if (button.tag == 11)
{
waitinglabel.text = @"A#";
}
if (button.tag == 12)
{
waitinglabel.text = @"B";
}
}
- (void)setupGame {
seconds = 30;
count = 0;
timerlabel.text = [NSString stringWithFormat:@"Time: %i", seconds];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(subtractTime)
userInfo:nil
repeats:YES];
}
- (void)subtractTime {
seconds--;
timerlabel.text = [NSString stringWithFormat:@"Time: %i",seconds];
if (seconds == 0) {
[timer invalidate];
}
}
@end
Отметьте ответ, который помог вам принять. Кроме того, обычно нехорошо менять свой вопрос на новый вопрос о последующих действиях. – memmons
Мне очень жаль! В следующий раз обязательно последуют правилам. – Automatika