-1

我正在尝试创建一个简单的电话簿应用程序,允许我从列表中呼叫人。该应用程序根据姓氏的字母顺序在不同部分列出了联系人的姓名及其电话号码。一切都正常显示,我的问题是当我选择一个联系人并提示“取消”或“呼叫”时,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 的方式不正确。任何帮助将不胜感激,谢谢!

4

1 回答 1

1

更改此行

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

对此

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

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

于 2013-08-21T14:34:04.670 回答