2012-05-03 44 views
5

Tôi có chú thích tùy chỉnh đặt hình ảnh chú thích của nó dựa trên loại chú thích bằng cách sử dụng phương thức ủy quyền viewForAnnotation. Im chỉ sử dụng 1 chú thích đại diện cho một chiếc xe đang di chuyển và muốn thay đổi hình ảnh khi xe được phát hiện di chuyển và dừng lại. Làm thế nào tôi có thể đi về điều này ngoài việc loại bỏ chú thích của tôi và thêm lại nó gây ra một chớp mắt?thay đổi hình ảnh chú thích sau khi đã tạo

Trả lời

10

Bất cứ nơi nào bạn phát hiện trạng thái của ô tô đã thay đổi, hãy truy xuất chế độ xem hiện tại của chú thích bằng cách sử dụng phương thức MKMapViewdụviewForAnnotation:. Điều này không giống như phương thức mapView:viewForAnnotation:đại biểu.

Sau khi có chế độ xem hiện tại cho chú thích, bạn có thể sửa đổi thuộc tính của nó bao gồm image.

Cũng đảm bảo phương thức ủy quyền mapView:viewForAnnotation: có cùng điều kiện chính xác để đặt image dựa trên trạng thái chú thích của ô tô. Bạn có thể muốn đặt logic trong một phương thức chung được gọi từ cả hai nơi (nơi trạng thái thay đổi và phương thức ủy nhiệm) để mã không bị trùng lặp.

Ví dụ, nơi mà các thay đổi trạng thái, bạn có thể có:

//carAnnotation is your id<MKAnnotation> object 
MKAnnotationView *av = [mapView viewForAnnotation:carAnnotation]; 
if (carAnnotation.isMoving) 
    av.image = [UIImage imageNamed:@"moving.png"]; 
else 
    av.image = [UIImage imageNamed:@"stopped.png"]; 

Các if tuyên bố (hoặc bất kỳ logic bạn phải thiết lập image) là phần mà cũng phải ở trong phương pháp viewForAnnotation đại biểu.

+0

Không có ý tưởng tại sao điều này đã không có một upvote trước khi .. câu trả lời tuyệt vời – Sean

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