我正在尝试创建一个简单的电话簿应用,允许我从列表中呼叫人。该应用程序根据姓氏按字母顺序列出联系人姓名及其电话号码。一切都正常显示,我的问题是当我选择一个联系人并提示“取消”或“呼叫”时,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是不正确的。任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
更改此行
NSString *urlString = [NSString stringWithFormat:@"tel://%@",[SectionA objectAtIndex:indexPath.row]];
到这个
urlString = [NSString stringWithFormat:@"tel://%@",[SectionA objectAtIndex:indexPath.row]];
您在全局/实例变量上隐藏了局部变量,因此指定的值永远不会达到您预期的值。换句话说,此时存在两个urlString。本地的一个和一个全局/实例范围的范围。您的分配更改了本地分配,您尝试使用该值使用全局/实例分配。