2011-02-09 16 views
6

Kullanmakta olduğum iPhone için, kullanıcının bir tablodaki bir haritadan bir seçim görmesini sağlayan gezinme tabanlı bir uygulamasına sahibim. Kullanıcının seçilen konumu harita üzerinde belirten bir ek açıklama var. Normal davranışa göre, kullanıcı ek açıklamaya tıklarsa, konumla ilgili ayrıntılarla birlikte bir açıklama metni görünür. Burada sorun yok.Harita ilk yüklendiğinde haritadaki ek açıklama belirtme çizgisi nasıl otomatik olarak açılır?

Sorum şu ki, kullanıcı haritayı içeren ekrana getirildikten sonra ek açıklamadan otomatik olarak görünmesini isterim. Böylece, kullanıcının ek açıklamayı görmek için ek açıklamayı tıklatması gerekmez. konumla ilgili ayrıntılar, ancak bunu nasıl yapacağımı bilmiyorum.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

Restaurant *rLocation = [restaurantList objectAtIndex:indexPath.row]; 

MapViewController *mapController = [[MapViewController alloc] initWithRestaurant:rLocation]; 
[self.navigationController pushViewController:mapController animated:YES]; 
[mapController release]; 
} 

: MapViewController önceki ekranda aşağıdaki yönteminden denir

- (void)viewDidLoad { 

    [super viewDidLoad]; 
MKCoordinateRegion region; 
MKCoordinateSpan span; 

NavButtonAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
userCoord = delegate.userLocation.coordinate; 

region.center = userCoord; 
span.latitudeDelta = 0.4; 
span.longitudeDelta = 0.4; 
region.span = span; 

[mapView setMapType:MKMapTypeStandard]; 
[mapView setZoomEnabled:YES]; 
[mapView setScrollEnabled:YES]; 
mapView.showsUserLocation = YES; 
[mapView setRegion:region animated:YES]; 

RestaurantAnnotation *rAnnotation = [[RestaurantAnnotation alloc] init]; 
rAnnotation.title = restaurantObj.name; 
rAnnotation.subtitle = restaurantObj.address; 
rAnnotation.subtitle = [restaurantObj.address stringByAppendingFormat:@" %@", restaurantObj.hours]; 
rAnnotation.subtitle = [restaurantObj.address stringByAppendingFormat:@" %@", restaurantObj.phoneNumber]; 


CLLocationCoordinate2D newCoord = {restaurantObj.latitude, restaurantObj.longitude}; 
rAnnotation.coordinate = newCoord; 
[mapView addAnnotation:rAnnotation]; 

} 

: Ben harita görüntüsü eserin toplu gerçekleştirilir benim "MapViewController" sınıfında, aşağıdaki yöntemi var Bunu gerçekleştirmek için aşağıdaki yöntemi kullanmam gerektiğini anlıyorum:

Ancak, emin değilim. Tek seferde kullanıyorum birçok ek açıklama yok, sadece çalışmak için buna ihtiyacım var bir açıklama var.

Uygulamamda bu yöntemi nereye koyarım ve nereden ararım?
Bu yöntemi viewDidLoad yönteminden çağırır ve asıl yöntemi MapViewController sınıfımın içine yerleştirir miyim?

cevap

12

Sen MKMapView için delege olarak belirlenen sınıfa

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    id myAnnotation = [mapView.annotations objectAtIndex:0]; 
    [mapView selectAnnotation:myAnnotation animated:YES]; 
} 

eklemek zorunda.

+0

Hızlı yanıtınız için çok teşekkürler. Sonra yöntemi viewDidLoad yönteminden çağırır mıyım? – syedfa

+0

Hayır, doğrudan aramak zorunda değilsiniz. Temsilci kurduğunuz sürece otomatik olarak harita görünümünde çağrılır. – benwong

+1

Cevabınız için çok teşekkürler. Çözümün işe yaradı! Kendine iyi bak. – syedfa

İlgili konular