2014-01-26 36 views
1

我有一段時間[4秒]後隱藏MKAnnotationView的問題。我有一個MKMapView,名爲mapView它顯示用戶位置MKUserLocation,我已將UIButtonTypeDetailDisclosure添加到他的MKAnnotationViewMKAnnotationView自動被選中,但我想在一段時間後用NSTimer取消選擇它。我已經正確地實現了計時器,並且void方法被正確調用[我已經使用NSLog進行了檢查],但我不知道在void方法中寫入什麼代碼才能使註釋消失。如何隱藏MKAnnotationView?

這是我的代碼:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    for (MKAnnotationView* view in views) 
    { 
     if ([view.annotation isKindOfClass:[MKUserLocation class]]) 
     { 
      view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

      [self.mapView selectAnnotation:view.annotation animated:YES]; 
     } 

     mKAnnotationHideTimer = [NSTimer scheduledTimerWithTimeInterval:4.0 
                   target:self 
                   selector:@selector(hideMKAnnotation:) 
                   userInfo:nil 
                   repeats:NO]; 
    } 
} 

- (void)hideMKAnnotation:(NSArray *)views 
{ 
    // What code here? 
} 

有人可以幫我寫的代碼?

回答

2

你需要通過你的view.annotation作爲用戶信息的對象和實施hideMKAnnotation作爲

- (void)hideMKAnnotation:(NSTimer*)timer 
{ 
    id aview = timer.userInfo; 
    [self.mapView deselectAnnotation:aview animated:YES]; 
} 
+0

非常感謝您爲您的快速回答@malex,即:-)工作。但現在XCode給了我一個黃色的警告,它說:「發送'MKAnnotationView * __ strong'參數的不兼容類型'id '」我該如何解決這個問題? – Aluminum

+0

沒關係,我已經修復它添加「(id)」到「aview」,所以現在它是「取消選擇註釋:(id)aview」 – Aluminum

+0

我忘記了deselectAnnotation:有id參數。我糾正了我的答案。謝謝。 – malex