0

我在这里有此代码用于我的地图中的注释...

//alert view

if ([ann.title isEqual: @"Al-saidiya"]) {

    NSString *msg=@"Phone No : 079011111";
    UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"Call Us", nil];



    [alert1 show];
}
else if ([ann.title isEqual: @"Al-Kadmiya"]) {


    NSString *msg=@"Phone No : 07902222222";
    UIAlertView *alert2 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles:@"Call Us", nil];
    [alert2 show];
}

else if ([ann.title isEqual: @"Palestine St"]) {

    NSString *msg=@"Phone No : 0790333333";
    UIAlertView *alert3 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles: @"Call Us",nil];
    [alert3 show];
}

else if ([ann.title isEqual: @"Karada Maryam"]){

    NSString *msg=@"Phone No : 07905867";
    UIAlertView *alert4 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles:@"Call Us", nil];
    [alert4 show];
}

else if ([ann.title isEqual: @"Mansour Office"])  {

   NSString *msg=@"Phone No : 07954212";
    UIAlertView *alert5 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles: @"Call Us",nil];
    [alert5 show];
}

else if ([ann.title isEqual: @"Hunting Club"]) {


    NSString *msg=@"Phone No : 079337745";
    UIAlertView *alert6 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles: @"Call Us",nil];
    [alert6 show];
}
else if ([ann.title isEqual: @"Al-jadriya"])  {

    NSString *msg=@"Phone No : 07976231";
    UIAlertView *alert7 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles: @"Call Us",nil];
    [alert7 show];
}

else if ([ann.title isEqual: @"Al-jamea'a"]) {

    NSString *msg=@"Phone No : 07865323";
    UIAlertView *alert8 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"ok" otherButtonTitles: @"Call Us",nil];
    [alert8 show];
}

}

当我应用这种方法时::

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

    if (buttonIndex==1){
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"telprompt://576576576"]]];
        NSLog(@"It works!");
    }
}

它已应用于上面的每个警报对象并采用相同的号码。我希望每个警报对象在我想打电话时都有自己的电话号码。

4

5 回答 5

2

只需将标签添加到您的警报视图

if ([ann.title isEqual: @"Al-saidiya"]) {

    NSString *msg=@"Phone No : 079011111";
    UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"Contact" message:msg delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"Call Us", nil];

    alert1.tag = 0; // <--

    [alert1 show];
}

并检查标签alertView:clickedButtonAtIndex:

if (alertView.tag == 0) {
  // call Al-saidiya
}
...
于 2013-10-27T14:12:36.180 回答
1

好吧,即使 tilo 提出的解决方案有效,我认为当您有多个对象实例(如 UIAlertview)时,这不是正确的方法。

我想建议您改用块。 这些类别(项目对 UIActionSheet 使用相同的模式)允许您将操作块绑定到 alertView 中的特定按钮。

使用这种方法,您可以使用委托模式摆脱所有 if/switch 语句。

于 2013-10-27T14:36:07.973 回答
1

由于标题和电话号码是 1:1 的关系,我会使用字典:

NSDictionary *titlesAndMessages = @{@"Al-saidiya" : @"Phone No : 079011111",
                                    @"Al-Kadmiya" : @"Phone No : 07902222222",
                                    @"Palestine St" : @"Phone No : 0790333333"};

...

NSString *messageString = nil;
for (NSString *keyTitle in [titlesAndMessages allKeys]) {
    if ([ann.title isEqualToString:keyTitle]) {
        messageString = [titlesAndMessages objectForKey:keyTitle];
        break;
    }
}

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Contact" message:messageString delegate:self cancelButtonTitle:@"ok" otherButtonTitles:@"Call Us", nil];
[alert show];

}

这可以更好地扩展,因为您不必编写任何额外的代码来扩展,只需将条目添加到字典中(自动或以其他方式)。

于 2013-10-27T16:04:19.320 回答
1

使用UIAlertViewDelegate真的很笨拙。我建议每个人都使用PSAlertView进行任何重要的警报使用。

使用它,代码变得简单且独立。

- (void)promptToContact:(NSString *)message 
             withNumber:(NSString *)phoneNumber
{
    PSAlertView *alert = [[PSAlertView alloc] initWithTitle:@"Contact"];
    [alert setCancelButtonWithTitle:@"Dismiss" block:^{}];
    [alert addButtonWithTitle:@"Call" block:^{
        NSString *urlString = [NSString stringWithFormat:@"telprompt://%@", phoneNumber];
        NSURL *url = [NSURL urlWithString:urlString];
        [[UIApplication sharedApplication] openURL:url];
     }];
    [alert show];
}
于 2013-10-27T17:27:00.090 回答
0

首先在上面的代码中的 alertview 中设置标签,然后在下面的方法中。试试这样: -

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

    int indexValue=alertView.tag;

   switch (indexValue)
  {
  case 0:
    NSLog (@"zero");
   //your code
    break;
  case 1:
    NSLog (@"one");
  //your code
    break;
  case 2:
    NSLog (@"two");
  //your code
    break;
  case 3:
    NSLog (@"three");
  // your code
    break;
  case 4:
    NSLog (@"four");
  //your code
    break;
  case 5:
    NSLog (@"five");
  // your code
    break;
...... Up to

   case 8:
  // your code
   break;
  default:
    NSLog (@"done");
    break;
   }
于 2013-10-27T15:05:56.683 回答