UITableView和alertView:clickedButtonAtIndex方法

时间:2010-09-14 18:38:02

标签: iphone objective-c

我正在玩xCode并且正在尝试创建一个小应用程序,其中包含一个包含各种个人名称的表视图(使用数组构建)。用户可以单击表视图中的一行,并显示一个UIAlert,可以选择呼叫该人或取消。

如果他们点击取消,UIalert就会解散。如果他们点击“呼叫”按钮,我想启动“电话”应用程序并拨打他们的号码。

到目前为止,这就是我的代码:

//Generate the UIAlert when the user clicks on a row
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexpath
{
    NSUInteger row = [indexpath row];
    NSString *rowValue = [listData objectAtIndex:row];

    NSString *message = [[NSString alloc] initWithFormat:@"Contact %@", rowValue];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Call this Office"
                                                    message:message
                                                    delegate:self
                                                    cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"Call",nil];   


    [alert show];
    [message release];
    [alert release];
}

//Detect which of the UIAlert buttons was clicked and dial a different number
//based on the index of the original row that was selected
- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex 
{

    switch (row) 
    {
        case 1:         
            if (buttonIndex != [alert cancelButtonIndex]) 
            {
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
            }
            break;

        case 2:         
            if (buttonIndex != [alert cancelButtonIndex]) 
            {
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://987654321"]];
            }
            break;

        default:
            break;
    }


}

这是我的问题 - 我知道上面的switch语句不起作用 - 该方法不知道“行”是什么。那么,我究竟应该如何传入/访问用户点击用于我的switch语句的行的索引?

1 个答案:

答案 0 :(得分:4)

在您说[alert show]设置其标记

之前创建UIAlertView
alert.tag = [indexPath row];

现在在你的switch(row)语句中执行

switch(alert.tag)