2012-12-04 2 views
1

Le code que j'ai. Au fait, je ne peux pas appeler Call to work et le site Web ne s'ouvre pas non plus!comment lier des cellules statiques à Outlet/Actions - E.G appuyez sur la cellule d'appel pour appeler le numéro

- (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]]; 

Je dois ajouter l'adresse de destination qui pour mon application est = 28 Shad Thames, Londres, Royaume-Uni. Dans quel format l'écrire? parce que je ne peux pas le faire fonctionner et vraiment besoin de trier ce problème de mon application très rapide

Répondre

1

Vous n'avez pas besoin de créer des points de vente pour chaque cellule.

Votre méthode didSelectRowAtIndexPath est-elle appelée?

alors vous pouvez faire:

- (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]]; 
} 

indexPath.section pourrait aussi être indexPath.row, selon la façon dont vous avez fait le tableView.

Editer: J'ai ajouté la partie 'Itinéraire'. Cela vérifie si c'est ios5 ou ios6.

Pour iOS5 j'utiliser la LocalizedCurrentLocation de ce poste http://www.martip.net/blog/localized-current-location-string-for-iphone-apps

Pour iOS6 J'utilise le CLGeocoder pour obtenir le placemark puis ouvrez la carte avec elle et l'emplacement actuel.

Souvenez-vous d'ajouter CoreLocation.framework et MapKit.framework

+0

besoin 15 réputation que je n'ai malheureusement, 1 dernière question, cette mise en œuvre ouvre l'application cartes, est-il pas possible de le faire dans mon application elle-même plutôt que de lancer cartes application – holtii

+0

Il est possible, mais vous ne pouvez pas faire la partie «obtenir des directions». Vous pouvez uniquement afficher l'emplacement et la destination sans la ligne et la navigation, etc. Vous devez créer un mapView. Voici un tutoriel http://prassan-warrior.blogspot.dk/2012/11/apple-maps-on-iphone-with-mapkit-and.html –

+0

J'ai obtenu quelque chose de similaire, dans mon application 1 de mes onglets est un mapview, qui montre une marque de lieu à «design museum london» avec le bouton de divulgation, je voulais mettre en œuvre la même chose application de cartes où il affiche des informations + obtenir le bouton de directions, mais voulait tout faire dans mapview de mon application. – holtii

Questions connexes