How to prevent custom MKAnnotationViews from reverting back to using the default color and glyph image?
I have a few MKMapViews on separate tabs of a UITabBarController. Each map uses custom MKAnnotationViews for MKAnnotations and MKClusterAnnotations. The custom MKAnnotationViews are green with star glyph or green with a number if it's for a cluster.
The problem is that my custom MKAnnotationViews are randomly reverting back to the default appearance of red with a pin glyph. When I zoom in, the views will start to redraw and be right. I haven't been able to consistently reproduce the issue, but it seems to occur when I navigate away from a tab then return.
Is there a way to force a reload on map view similar to reloadData() on a collection view? My viewForAnnotation func shouldn't ever return nil so I don't know how this could be happening.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
var view = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotationView") as? CustomAnnotationView
if view == nil
view = CustomAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
else
view?.annotation = annotation
return view
// code for the cluster annotations redacted
ios mapkit mkmapview mkannotation mkannotationview
add a comment |
I have a few MKMapViews on separate tabs of a UITabBarController. Each map uses custom MKAnnotationViews for MKAnnotations and MKClusterAnnotations. The custom MKAnnotationViews are green with star glyph or green with a number if it's for a cluster.
The problem is that my custom MKAnnotationViews are randomly reverting back to the default appearance of red with a pin glyph. When I zoom in, the views will start to redraw and be right. I haven't been able to consistently reproduce the issue, but it seems to occur when I navigate away from a tab then return.
Is there a way to force a reload on map view similar to reloadData() on a collection view? My viewForAnnotation func shouldn't ever return nil so I don't know how this could be happening.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
var view = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotationView") as? CustomAnnotationView
if view == nil
view = CustomAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
else
view?.annotation = annotation
return view
// code for the cluster annotations redacted
ios mapkit mkmapview mkannotation mkannotationview
Addif annotation is MKUserLocation return nil
toviewFor annotation
method.
– Kosuke Ogawa
Nov 14 '18 at 4:01
@KosukeOgawa thanks for the response! However, the problem persists even with that line included.
– Camden Gaba
Nov 14 '18 at 19:02
add a comment |
I have a few MKMapViews on separate tabs of a UITabBarController. Each map uses custom MKAnnotationViews for MKAnnotations and MKClusterAnnotations. The custom MKAnnotationViews are green with star glyph or green with a number if it's for a cluster.
The problem is that my custom MKAnnotationViews are randomly reverting back to the default appearance of red with a pin glyph. When I zoom in, the views will start to redraw and be right. I haven't been able to consistently reproduce the issue, but it seems to occur when I navigate away from a tab then return.
Is there a way to force a reload on map view similar to reloadData() on a collection view? My viewForAnnotation func shouldn't ever return nil so I don't know how this could be happening.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
var view = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotationView") as? CustomAnnotationView
if view == nil
view = CustomAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
else
view?.annotation = annotation
return view
// code for the cluster annotations redacted
ios mapkit mkmapview mkannotation mkannotationview
I have a few MKMapViews on separate tabs of a UITabBarController. Each map uses custom MKAnnotationViews for MKAnnotations and MKClusterAnnotations. The custom MKAnnotationViews are green with star glyph or green with a number if it's for a cluster.
The problem is that my custom MKAnnotationViews are randomly reverting back to the default appearance of red with a pin glyph. When I zoom in, the views will start to redraw and be right. I haven't been able to consistently reproduce the issue, but it seems to occur when I navigate away from a tab then return.
Is there a way to force a reload on map view similar to reloadData() on a collection view? My viewForAnnotation func shouldn't ever return nil so I don't know how this could be happening.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
var view = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotationView") as? CustomAnnotationView
if view == nil
view = CustomAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
else
view?.annotation = annotation
return view
// code for the cluster annotations redacted
ios mapkit mkmapview mkannotation mkannotationview
ios mapkit mkmapview mkannotation mkannotationview
edited Nov 14 '18 at 19:03
Camden Gaba
asked Nov 13 '18 at 20:49
Camden GabaCamden Gaba
814
814
Addif annotation is MKUserLocation return nil
toviewFor annotation
method.
– Kosuke Ogawa
Nov 14 '18 at 4:01
@KosukeOgawa thanks for the response! However, the problem persists even with that line included.
– Camden Gaba
Nov 14 '18 at 19:02
add a comment |
Addif annotation is MKUserLocation return nil
toviewFor annotation
method.
– Kosuke Ogawa
Nov 14 '18 at 4:01
@KosukeOgawa thanks for the response! However, the problem persists even with that line included.
– Camden Gaba
Nov 14 '18 at 19:02
Add
if annotation is MKUserLocation return nil
to viewFor annotation
method.– Kosuke Ogawa
Nov 14 '18 at 4:01
Add
if annotation is MKUserLocation return nil
to viewFor annotation
method.– Kosuke Ogawa
Nov 14 '18 at 4:01
@KosukeOgawa thanks for the response! However, the problem persists even with that line included.
– Camden Gaba
Nov 14 '18 at 19:02
@KosukeOgawa thanks for the response! However, the problem persists even with that line included.
– Camden Gaba
Nov 14 '18 at 19:02
add a comment |
1 Answer
1
active
oldest
votes
Problem solved. I, apparently, needed to style the markers in the prepareForReuse function on the cluster subclasses.
override func prepareForReuse()
super.prepareForReuse()
style()
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289291%2fhow-to-prevent-custom-mkannotationviews-from-reverting-back-to-using-the-default%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Problem solved. I, apparently, needed to style the markers in the prepareForReuse function on the cluster subclasses.
override func prepareForReuse()
super.prepareForReuse()
style()
add a comment |
Problem solved. I, apparently, needed to style the markers in the prepareForReuse function on the cluster subclasses.
override func prepareForReuse()
super.prepareForReuse()
style()
add a comment |
Problem solved. I, apparently, needed to style the markers in the prepareForReuse function on the cluster subclasses.
override func prepareForReuse()
super.prepareForReuse()
style()
Problem solved. I, apparently, needed to style the markers in the prepareForReuse function on the cluster subclasses.
override func prepareForReuse()
super.prepareForReuse()
style()
edited Nov 16 '18 at 17:42
answered Nov 14 '18 at 20:25
Camden GabaCamden Gaba
814
814
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289291%2fhow-to-prevent-custom-mkannotationviews-from-reverting-back-to-using-the-default%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Add
if annotation is MKUserLocation return nil
toviewFor annotation
method.– Kosuke Ogawa
Nov 14 '18 at 4:01
@KosukeOgawa thanks for the response! However, the problem persists even with that line included.
– Camden Gaba
Nov 14 '18 at 19:02