我需要一些幫助,我的代碼。 我有一個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,1和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];
}
所以我改變了@選擇到alertView之一,現在當我按下執行所有代碼的按鈕,它給了我那個SIGABRT錯誤。任何想法爲什麼? 謝謝你的幫助!
您沒有(或者您沒有顯示)名爲「alertView」的選擇器 – rdelmar
那麼我怎樣才能讓所有的代碼工作,當我按下按鈕?因爲它需要在uialertview內部嗎? – emiliomarin
我不確定你現在在做什麼 - alertView:clickedButtonAtIndex:method是一個委託方法,當你點擊一個按鈕時被UIAlert調用,你不明確地調用它(如果這就是你想要的在定時器方法中做)。您需要創建一個屬性buttonTitle,以便可以跨不同的方法使用 - 唯一需要在委託方法中的是self.buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];然後,你會使用buttonTitle,就像我在答案中顯示的那樣。 – rdelmar