【问题标题】:Setting MKAnnotationViews as Favorites将 MKAnnotationViews 设置为收藏夹
【发布时间】:2012-12-12 03:48:43
【问题描述】:

我发现一些帖子显示了如何根据 UIButton 的状态更改其图像或图像背景。但是他们都没有提到这个UIButton 在 MKAnnotationView 的标注气泡内的情况。这是我想要做的:

我的地图上有很多 MKAnnotationViews,我希望用户能够将其中一些设置为收藏夹。我认为如果这个选项可以作为UIButton 设置为我的leftCalloutAccessoryView,那应该很酷。

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
// Here I've created the button...
// Now I set the states:

        [self.button setImage:self.image_1 forState:UIControlStateNormal];
        [self.button setImage:self.image_2 forState:UIControlStateHighlighted];
        [self.button setImage:self.image_3 forState:UIControlStateSelected];

        annotationView.leftCalloutAccessoryView = self.button;
}

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
self.button.selected = YES;
}

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if ([self annotationIsFavorite:view.annotation])
{
    [self.button setImage:self.image_3 forState:UIControlStateNormal];
}
}

我尝试了不同的方法。为气泡内的UIButton 设置此特定状态是否有任何限制?因为UIControlStateHighlighted 工作正常。我必须将该代码放在didSelectAnnotationView: 上,因为如果注释已经是收藏夹,UIButton 应该出现在其选定状态。我做错了什么?

【问题讨论】:

  • 您实际上是否对所有注释视图使用单个实例self.button?相反,请尝试在自定义注释类(实现MKAnnotation 的注释类)中存储“选定”状态,并在 viewForAnnotation 中创建/设置一个反映当前annotation 状态的本地按钮。
  • 是的,它是一个实例,我在 viewForAnnotation 中设置它。我认为你是对的,我会努力做到这一点。我会告诉你这是否有效。还是谢谢!
  • 您对单个实例的看法完全正确。我选择了一种与你的方法略有不同的方法:我正在检查注释是否在我的收藏夹 NSMutableArray 中,如果是,那么我在 viewForAnnotation 中将其设置为选中。
  • 太好了,您可以自己将其添加为答案,甚至在几个小时后接受。

标签: ios uibutton mkannotationview


【解决方案1】:

感谢@Anna Karenina,我发现我做错了:对所有注释视图使用我的 UIButton 的单个实例。不过,我做了一些与她在 viewForAnnotation 中的建议有些不同的事情。我没有在我的自定义注释类中存储“选定”状态,而是始终检查注释当前是否在我的收藏夹数组中,如果是,我将其按钮状态更改为选定。也许她的解决方案更优雅,甚至更快,我稍后会尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多