2012-05-18 5 views
0

지도가 여러 개 있습니다 (핀 2 개). 나는 자막으로 타이머를 가지고있다. (무언가 이후 얼마나 많은 시간이 지 났는지). 문제는 어떻게해야할지 모르겠다는 것입니다. 확실히 timer는 mapView를 사용하여 viewController에 배치해야합니다. 그렇다면 아마 일부 관측자는 주석을 얻기 위해 정착했습니다 ... 그러나 관측자를 제거하고 관측자를위한 조치를 설정하는 위치는 어디에서 변경됩니까? 아니면 더 좋은 개념이 있을까요? 답장을 보내 주셔서 감사합니다.timer in mapViews 콜 아웃

+0

부제가 "12 분 전"과 같은 것을 말하고 싶습니까? 주석 클래스에서 "무언가"가 발생한 날짜/시간을 저장 하시겠습니까? 너 뭐 해봤 니? – Anna

+0

@Anna Karenina 예, 정확히 "12 분 전"과 같습니다. 내 주석 클래스에 날짜를 저장합니다. 개념에 대해 지금 생각하고 있습니다 - 관찰자, 알림 또는 마틴의 개념 (아래)을 선택할 수있는 것처럼 보입니다. 그러나이 방법으로 핀에 현재 현재 콜 아웃이 표시되어 있으면 새로 고침해야합니다. – Vive

답변

0

나는 내 자신의 MKAnnotation 클래스를 만들 것이다.

@interface MyAnnotation : NSObject <MKAnnotation> { 
    CLLocationCoordinate2D _coordinate; 
    NSMutableString * title; 
    NSMutableString * subtitle; 
    ... 
    UIImage * pinImage; 
    ... 
    NSDate * startTime; 
} 

이 클래스는 시간이 경과 자막 현재 시간 ([NSDate date]) 및 표시 특성을 비교하고 대해 refreshTime 법 등의 NSDate * startTime을 가질 것이다. 새로 고칠 않습니다

그럼 당신은 당신의지도 주석

for(MyAnnotation * annotation in [mapView annotations]) { 
    if([annotation isKindOfClass:[MyAnnotation class]]) // important cause the user centered blue point is part of your annotation list! 
     [annotation refreshTime]; 
} 

이제 질문입니다

를 새로 고칠 수 있나요?

예를 들어 n 초마다 새로 고치는 타이머를 사용하거나 ViewDidAppear에서 새로 고침을 시작할 수 있습니다. 원하는 작업에 따라 다릅니다.

편집 :

당신이 주석 선택에 새로 고칠 경우, 어쩌면 당신이 MKAnnotationView의 자신의 AnnotationView 서브 클래스를 생성 할 수 있습니다.

그런 다음 AnnotationView에서 touchesBegan:withEvent: 또는 touchesEnded:withEvent:을 재정 의하여 업데이트를 보냅니다.

테스트하지는 않았지만 작동 할 것이라고 확신합니다.

+0

나는이 두 가지 유형의 핀 각각에 대해 2 개의 주석 클래스를 가지고 있습니다. 어쨌든, 나는이 초당 루프를 실행하는 것이 싫어서 불필요한 것으로 보인다. (나는 많은 핀을 가지고 있으며 루프는 모든 것을 통과한다. 현재이 콜 아웃이 표시된 핀에만이 업데이트를 보낼 수있는 방법이 있습니까? 그렇지 않다면, 귀하의 솔루션이나 옵서버가 적절한 해결책 인 것처럼 보입니다 (둘 다). – Vive

+0

좋아요, 당신 말이 맞아요. 매 초마다 새로 고치면 꽤 나쁜 해결책이 될거에요. 다른 아이디어를 보려면 제 편집을보세요. – Martin

+0

고마움,이 주제로 돌아가서 대답을 수락하면 시도해 보겠습니다. – Vive

관련 문제