0

最初のアラートのボタンは、基本的に誰かに電話するための確認である 2 番目のアラートを実行します。エラーは発生しませんが、機能しません。
2 番目のアラートで [通話] ボタンを押すと、クラッシュします

-(void) alertView: (UIAlertView *) alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{

     NSString *buttonString = [alertView buttonTitleAtIndex:buttonIndex];
     if ([buttonString isEqualToString:@"Phone"]) 
     {    
          UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"Notice!" message:@"You are about to call .... Do you wish to continue?" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Call", nil];    
          [alert2 show];

          if ([buttonString isEqualToString:@"Call"]){

              [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel://12345678"]]];

          }

          if([buttonString isEqualToString:@"Website"]){

              [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"website"]];
          }

          if ([buttonString isEqualToString:@"Facebook"]){

             [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/groups/..../"]];

          }
     }
}
4

4 に答える 4

0

とった!何らかの理由で、[[[alertView subviews] objectAtIndex:6]setBackgroundColor...私が持っていた最初のalertViewボタンが2番目のalertView機能に干渉しました。ただし、xcodeを4.4.1に更新するまで、xcodeは問題に直接誘導しませんでした。

于 2012-08-09T05:40:30.090 に答える
0

2 番目のアラートを遅らせて起動します。問題は、新しいアラートが表示される前に、アラートが非表示になるまでに時間がかかるため、2 つ目のアラートを直接呼び出すことができないことです。

たとえば、これを試してください:

- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    NSString *buttonString = [alertView buttonTitleAtIndex:buttonIndex];
    if ([buttonString isEqualToString:@"Phone"]) 
    {
        [self performSelector:@selector(callSecondAlertView) withObject:nil afterDelay:1];
    }
}

- (void)callSecondAlertView
{
    //show new alert view
    UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"Notice!" message:@"You are about to call .... Do you wish to continue?" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Call", nil];

    [alert2 show];

    [alert2 release];
}

機能しない場合、または遅延が長すぎる場合は、afterDelay:値を使用してプレイしてください。

于 2012-07-30T11:47:09.357 に答える