如何将tel://方案与​​stringWithFormat一起使用

时间:2013-08-21 13:58:57

标签: objective-c url-scheme

我正在尝试创建一个简单的电话簿应用,允许我从列表中呼叫人。该应用程序根据姓氏按字母顺序列出联系人姓名及其电话号码。一切都正常显示,我的问题是当我选择一个联系人并提示“取消”或“呼叫”时,alertView中的“呼叫”按钮没有做任何事情。

这是我正在使用的代码(urlString是一个全局变量):

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog("@didSelectRowAtIndexPath");
    NSString *alphabet = [nameIndex objectAtIndex:[indexPath section]];

    if([alphabet isEqual:@"A"])
    {
        UIAlertView *messageAlert = [[UIAlertView alloc] initWithTitle:@"Do you want to call.." message:[SectionA objectAtIndex:indexPath.row] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Call", nil];

        NSString *urlString = [NSString stringWithFormat:@"tel://%@",[SectionA objectAtIndex:indexPath.row]];

        [messageAlert show];
    }

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

对于名称/数字的不同部分,有更多if语句具有相同的代码,为了空间和时间,我只添加了一个部分。

这是我试图让“呼叫”按钮实际上拨打号码的地方:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if(buttonIndex != [alertView cancelButtonIndex])
    {
        NSLog(@"Calling phone number");
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
    }
}

警报显示所选的正确电话号码,当我选择“呼叫”时,没有任何反应。但“呼叫电话号码”确实显示在输出日志中。在我假设我在urlString中存储的内容不正确的时刻被困住了;或者我如何使用urlString是不正确的。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

更改此行

NSString *urlString = [NSString stringWithFormat:@"tel://%@",[SectionA objectAtIndex:indexPath.row]];

到这个

urlString = [NSString stringWithFormat:@"tel://%@",[SectionA objectAtIndex:indexPath.row]];

您在全局/实例变量上隐藏了局部变量,因此指定的值永远不会达到您预期的值。换句话说,此时存在两个urlString。本地的一个和一个全局/实例范围的范围。您的分配更改了本地分配,您尝试使用该值使用全局/实例分配。