1

私が持っているコード。ちなみに、Call to work もできず、Web サイトも開きません。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *urlToOpen = @"";
if( indexPath.section == 0 ){
    // call number
    urlToOpen = @"tel:442074036933";
} else if( indexPath.section == 1 ){
    // open website
    urlToOpen = @"http://www.designmuseum.org";
} else {
    // open address

    urlToOpen = @"http://maps.apple.com/maps?daddr=Design+Museum+London";
}
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlToOpen]];
NSString *destinationAddress = [NSString stringWithFormat:@"%@+%@+%@",
                                [address street],
                                [address city],
                                [address country]];

NSString *sourceAddress = [LocalizedCurrentLocation currentLocationStringForCurrentLanguage];

NSString *url = [NSString stringWithFormat:@"http://maps.apple.com/maps?saddr=%@&daddr=%@",
                 [sourceAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                 [destinationAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

私のアプリの宛先アドレスを追加する必要があります = 28 Shad Thames, London, United Kingdom. どの形式で書く?私はそれを機能させることができず、本当に私のアプリのこの問題を本当に素早く解決する必要があるからです

4

1 に答える 1

1

セルごとにアウトレットを作成する必要はありません。

didSelectRowAtIndexPath メソッドが呼び出されていますか?

次に、次のようにします。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *urlToOpen = @"";
    if( indexPath.section == 0 ){
        // call number
        urlToOpen = @"tel:12125551212";
    } else if( indexPath.section == 1 ){
        // open website
        urlToOpen = @"http://www.google.nl";
    } else {
        // open address
            NSString *destinationAddress = @"Amsterdam";

            Class itemClass = [MKMapItem class];
            if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {

                CLGeocoder *geocoder = [[CLGeocoder alloc] init];
                [geocoder geocodeAddressString:destinationAddress completionHandler:^(NSArray *placemarks, NSError *error) {
                    if([placemarks count] > 0) {

                        MKPlacemark *placeMark = [[MKPlacemark alloc] initWithPlacemark:[placemarks objectAtIndex:0]];

                        MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:placeMark];

                        MKMapItem *mapItem2 = [MKMapItem mapItemForCurrentLocation];


                        NSArray *mapItems = @[mapItem, mapItem2];

                        NSDictionary *options = @{
                                        MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
                                        MKLaunchOptionsMapTypeKey:
                                        [NSNumber numberWithInteger:MKMapTypeStandard],
                                        MKLaunchOptionsShowsTrafficKey:@YES
                        };

                        [MKMapItem openMapsWithItems:mapItems launchOptions:options];

                    } else {
                        //error nothing found
                    }
                }];
                return;
            } else {

                NSString *sourceAddress = [LocalizedCurrentLocation currentLocationStringForCurrentLanguage];

                urlToOpen = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@",
                             [sourceAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                             [destinationAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
            }
    }
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlToOpen]];
}

tableView の作成方法によっては、indexPath.section を indexPath.row にすることもできます。

編集: 「道順を取得」部分を追加しました。これは、ios5 か ios6 かをチェックします。

iOS5 の場合、この投稿の LocalizedCurrentLocation を使用します http://www.martip.net/blog/localized-current-location-string-for-iphone-apps

iOS6 の場合、CLGeocoder を使用して目印を取得し、目印と現在の場所で地図を開きます。

CoreLocation.framework と MapKit.framework を忘れずに追加してください

于 2012-12-05T12:43:43.850 に答える