2014-10-19 54 views
0

我viewforAnnotation這樣的定義:依奧斯地圖標註與按鈕

 - (MKPinAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id  <MKAnnotation>)annotation{ 

    MKPinAnnotationView *view = nil; 
    //MKPinAnnotationView *view=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"HotSpotsLoc"]; 

    if(annotation !=mapView.userLocation){ 
     view = (MKPinAnnotationView *) 
     [mapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"]; 
     if(nil == view) { 
      view = [[MKPinAnnotationView alloc] 
        initWithAnnotation:annotation reuseIdentifier:@"identifier"]; 
     } 



     UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeSystem]; 
     [btnViewVenue setTitle:@"Foo" forState:UIControlStateNormal]; 
     view.rightCalloutAccessoryView=btnViewVenue; 
     view.enabled = YES; 
     view.pinColor = MKPinAnnotationColorPurple; 
     view.canShowCallout = YES; 
     view.multipleTouchEnabled = NO; 
     //view.animatesDrop = YES; 

    }  
    return view; 
} 

它通常工作,增加了一個按鈕等等。但是,當我補充一下:

[btnViewVenue setTitle:@"Foo" forState:UIControlStateNormal]; 

要設置按鈕的名稱,節目不工作了,我不能添加任何註釋或什麼,只是有MapView類。誰能告訴我什麼是錯的? 謝謝。

+0

您可能還需要設置按鈕的框架和titleColor。 – Anna 2014-10-20 10:43:54

回答

0

改變這種

UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeSystem];

UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeCustom];

+0

請編輯您的答案,以添加關於您的代碼如何工作以及如何解決OP問題的解釋。許多SO海報是新手,不會理解你發佈的代碼。 – 2014-10-19 21:47:17

+0

好吧,我理解它,它的工作原理,但它不會改變按鈕的標籤,沒有按鈕可見或沒有像這樣... – user2511527 2014-10-19 21:57:56

+0

設置按鈕幀使用[btnViewVenue setFrame:CGSizeMake(0,0,50,50) ]。使用[self.view addSubView btnViewVenue]將按鈕添加到視圖中; – ZAZ 2014-10-20 15:20:20