2012-09-20 22 views
5

Sự hiểu biết của tôi là không có vấn đề gì khi chuyển sang bản đồ iOS 6. Nhưng vì một lý do nào đó, nút tiết lộ chi tiết hiện đang MISSING trong bản đồ ứng dụng của tôi. Có cách nào để lấy lại điều này không. Wow, hoàn toàn bất ngờ. Điều này đã được làm việc trong nhiều năm, vì vậy tất cả các đại biểu là tốt.Bản đồ iOS6, MISSING nút tiết lộ chi tiết (chữ V xanh lam) trên tất cả bản đồ của tôi! Cách lấy lại

#pragma mark MKMapViewDelegate 
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 

MKPinAnnotationView *pin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"REUSEME"] autorelease]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

if ([annotation isKindOfClass:[MKUserLocation class]]) { 
    pin.animatesDrop = YES; 
    return nil; 
} else { 
    [pin setPinColor:MKPinAnnotationColorGreen]; 
} 

pin.rightCalloutAccessoryView = button; 
pin.animatesDrop = YES; 
pin.canShowCallout = YES; 

return pin; 
} 
+0

Tôi đã có này là tốt. Tìm thấy rằng nếu tôi để ứng dụng chạy một chút, hãy phóng to chân khỏi màn hình và ngược lại, chú thích sẽ hoạt động một lần nữa. Có vẻ như một lỗi trong khả năng tương thích nhưng phải có một vấn đề đặt hàng mà sẽ sửa chữa nó? Tôi sẽ đăng câu trả lời nếu tôi tìm thấy nó! – sradforth

Trả lời

0

Tôi không có vấn đề này và sự khác biệt duy nhất tôi có thể thấy giữa mã của bạn và của tôi là trong việc tạo ra các đối tượng MKPinAnnotationPinView như tôi cố gắng dequeue nó đầu tiên:

MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"]; 
0

tôi có cùng một vấn đề và tôi sử dụng cùng một mã như câu trả lời đầu tiên:

MKPinAnnotationView * MyPin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @ "MyPin"];

Tôi cũng nhận thấy các vấn đề khác kể từ khi cập nhật lên Xcode 4.5/iOS 6.

0

Những gì tôi đã nhận thấy trong mapKit dành cho iOS 6 là thời gian là điều cần thiết. Đặt ủy nhiệm của MKMapView thành muộn (tức là trong viewDidLoad), bản đồ sẽ sử dụng kiểu chú thích mặc định cho các chú thích đã được thêm vào. Giải pháp cho tôi là di chuyển mapView.delegate = self, tới phương thức loadView (void).

0

@ErCa Theo tài liệu iOS, bạn không bao giờ nên gọi loadView trừ khi bạn đang xây dựng chế độ xem tùy chỉnh.

Sự cố nằm ở nơi khác. Tôi có nó là tốt và sẽ đăng một câu trả lời một khi tôi tìm thấy nó.

@ ed-potter Bạn đang nhắm mục tiêu iOS4? Tôi hỏi vì bạn tự động phát hiện MKPinAnnotationView mà không cần thiết với ARC.

0

Điều này cũng xảy ra với tôi. Đúng là ủy nhiệm MKMapView cần được thiết lập sớm hơn viewDidLoad: bây giờ vì một lý do nào đó. Những gì tôi đã kết thúc là thiết lập delegate mapView trong hàm setMapView: của tôi.

Vì vậy, cho bộ điều khiển xem có chứa các MKMapView, tôi đã có tài sản sau đây:

@property (nonatomic, yếu) IBOutlet MKMapView * MapView;

và vì vậy tôi đặt trong phạm vi chức năng setMapView:

- (void) setMapView: (MKMapView *) MapView {

_mapView = mapView; 

self.mapView.delegate = self;//needed to move setting of the mapView delegate here because they changed when the viewForAnnotations delegate function is called when Apple went to iOS 6 and changed the maps App. Now all of the annotations are loaded and the views for those annotations are set up before the View Controller even calls viewDidLoad. 

[self updateMapView]; 

}

2

tôi đã cùng một vấn đề và thiết lập MapView đại biểu trong Storyboard đã làm cho các trick cho tôi, mũi tên chú thích bây giờ làm việc :)

0

Tôi đã có cùng một vấn đề và cũng đã thiết lập self.mapView.delegate = self trong viewDidLoad nhưng mapView:viewForAnnotation: không được gọi, vì vậy, leftCalloutAccessoryView của tôi không nhận được số UIImageView tôi đã chỉ định. Tôi đã quay lại để xem lại Ray Wenderlich's Introduction to MapKit in iOS 6 Tutorial và thấy điều này:

Đầu tiên chọn MainStoryboard.storyboard.Sau đó đặt View Controller (ngay ở đầu danh sách) làm đại biểu của chế độ xem bản đồ bằng cách kiểm soát nhấp vào chế độ xem bản đồ và kéo một đường từ mục nhập ủy quyền vào Trình điều khiển chế độ xem.

2

tôi đã cùng một vấn đề, tôi chỉ đưa các đại biểu sau khi chú thích và làm việc hoàn hảo!

mapView.delegate = self; 
[self.mapView addAnnotation:ann]; 

Tks, Cauca

Các vấn đề liên quan