내 코드에 도움이 필요합니다. 나는 UIAlert를 처음으로 열어 응용 프로그램을 열었습니다. 그 팝업에서는 두 개의 버튼이 있으며 사용자는 그 중 하나를 선택합니다. 나는 어떤 코드를 실행하기 위해 사용자가 선택한 버튼을 앱이 기억하기를 원한다. 문제는 내가 여기이 코드가 있습니다 :UIButton의 속성 저장
-(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과 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
}
}
}
문제에서 모든 코드를 호출하도록되어 있다는 점이다 : 나는 alertView 하나에 @selector를 변경 그래서
- (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];
}
지금은 누를 때 모든 코드를 실행하는 버튼은 저에게 SIGABRT 오류를줍니다. 어떤 아이디어? 도와 주셔서 감사합니다.
"alertView"라는 선택기가 없거나 표시되지 않습니다. – rdelmar
단추를 누를 때 모든 코드가 작동하도록하려면 어떻게해야합니까? uialertview 내부에 있어야하기 때문에? – emiliomarin
당신이 지금 무엇을하고 있는지 잘 모르겠습니다 - alertView : clickedButtonAtIndex : 메서드는 버튼을 클릭 할 때 UIAlert에 의해 호출되는 위임 메서드입니다. 명시 적으로 호출하지 않습니다. 타이머 메소드에서 수행). 서로 다른 메서드에서 사용할 수 있도록 속성 buttonTitle을 만들어야합니다. 위임 메서드에 있어야하는 유일한 것은 self.buttonTitle = [alertView buttonTitleAtIndex : buttonIndex]입니다. 그럼 내가 대답 한 것처럼 buttonTitle을 사용할거야. – rdelmar