Ваша проблема связана с методом делегата alertView2
. Делегат - это метод, который автоматически вызывается, когда что-то происходит. В этом случае метод delagate: - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
автоматически вызывается при закрытии UIAlertView. Итак, ваша проблема в том, что ваш alert2
также вызывает тот же метод делегата, что и ваше первое предупреждение.
Но это действительно легко исправить. Чтобы исправить это, мы добавляем тег к каждому alertView. Затем в методе делегата мы проверяем тег, чтобы увидеть, какое это было предупреждение. Вот как это сделать:
//Set up your first alertView like normal:
-(IBAction)creditBtn: (id) sender{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Credits"
message:@"Message"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Visit", nil];
alert.tag = 0; //Here is that tag
[alert show];
[alert release]; //Although this is unnecessary if you are using iOS 5 & ARC
}
Единственное, что я изменил, я пометил первое предупреждение как предупреждение 0. Это означает, что, если у каждого предупреждения есть свой тег, мы можем увидеть разницу.
Затем настройте ваш второй alertView так же, как вы делали:
-(IBAction)sendBtn:(id)sender{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Send Me Your Feedback"
message:@"Message"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Visit", nil];
alert.tag = 1; //Notice I used a different tag number
[alert show];
[alert release];
}
Обратите внимание, что я назвал оба alertViews alert
. Мне не нужно было называть их alert
& alert2
, потому что это называется переменной областью действия. Область действия переменных означает, что переменные живут некоторое время, а затем умирают. Так что в вашем случае, потому что вы создали переменную UIAlertView *alert
внутри метода, в конце этого метода эта переменная умирает. Для получения дополнительной информации об этом, проверьте это: Статья о переменной области
Затем, наконец, метод делегата, который отвечает на закрытие alertView:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(alert.tag == 0 && buttonIndex == 1) //Show credits
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://website1.com"]];
else if(alert.tag == 1 && buttonIndex == 1) //Send feedback
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://website2.com"]];
}
Вот и все. Дайте мне знать в комментарии, если вам нужна дополнительная помощь.