コードについてサポートが必要です。アプリを初めて開いたときにポップアップするUIAlertがあります。そのポップアップには、2つのボタンがあり、ユーザーはそのうちの1つを選択します。ユーザーがコードなどを実行するために選択したボタンをアプリに記憶させたい。問題は、私がこのコードをここに持っているということです:
-(void)changeLabel{
progressView.progress += 0.25;
scan.hidden = YES;
if (progressView.progress == 1 ) {
label.hidden = YES;
progressView.hidden = YES;
[timer invalidate];
imagesText.hidden = NO;
int randomNumber = arc4random() % 4;
switch (randomNumber) {
case 0:
imagesText.image = [UIImage imageNamed:@"image1.png"];
break;
case 1:
imagesText.image = [UIImage imageNamed:@"image2.png"];
break;
case 2:
imagesText.image = [UIImage imageNamed:@"image3.png"];
break;
case 3:
imagesText.image = [UIImage imageNamed:@"image4.png"];
default:
break;
}
}
}
したがって、ユーザーが最初のボタンを選択した場合、アプリはケース0、1、2を切り替え、2番目のボタンを選択した場合は3と他のボタンを切り替えるようにします。ただし、どちらの場合もコードの先頭を同じにする必要があります。私はいくつかのものを試しましたが、それは私が望んでいたようには機能しません。ご協力ありがとうございました!
更新:エラーを修正しました。だから今私はこれを持っています:
- (void)viewDidLoad
{
if (![@"1" isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"alert"] ]) {
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"alert"];
[[NSUserDefaults standardUserDefaults] synchronize];
UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"Welcome!" message:@"Select your language" delegate:self cancelButtonTitle:@"Button1" otherButtonTitles:@"Button2", nil];
[alerta show];
[alerta release];
}
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
progressView.progress += 0.25;
scan.hidden = YES;
if (progressView.progress == 1 ) {
label.hidden = YES;
progressView.hidden = YES;
[timer invalidate];
imagesText.hidden = NO;
int randomNumber;
if ([buttonTitle isEqualToString:@"Button1"]) {
randomNumber = arc4random() % 3;
}else if ([buttonTitle isEqualToString:@"Button2"]) {
randomNumber = arc4random() % 3 + 3;
}
switch (randomNumber) {
//CODE
}
}
}
問題は、そのすべてのコードが次の場所から呼び出されることになっていることです。
- (IBAction)scan:(id)sender {
label.hidden = NO;
imagesText.hidden = YES;
progressView.hidden = NO;
progressView.progress = 0;
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(alertView) userInfo:nil repeats:YES];
}
そこで、@ selectorをalertViewに変更しました。すべてのコードを実行するボタンを押すと、SIGABRTエラーが発生します。なぜ何かアイデアはありますか?助けてくれてありがとう!