gpt4 book ai didi

ios - 101 iOS MapKit,坐标和是对象变量,但按钮不是?

转载 作者:行者123 更新时间:2023-11-28 23:01:36 27 4
gpt4 key购买 nike

当使用 MapKit 库并放置一个 pin/MKAnnotation 时,您将实现具有坐标、名称和描述的 MKAnnotation 类:

@interface MyAnnotationClass : NSObject <MKAnnotation> {
NSString *_name;
NSString *_description;
CLLocationCoordinate2D _coordinate;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
-(id) initWithCoordinate:(CLLocationCoordinate2D) coordinate;
@end

将图钉放置在 map 上时会显示这些核心详细信息。但是,当您想让同一个图钉有一个按钮时,您可以在 MapViews 委托(delegate)中实现以下方法:

-(MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation {
...
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return(annotationView);
}

为什么要这样约定?我希望“rightCalloutAccessory”将成为 MKAnnotation 的一部分。我知道这是可选的,那么 rightCallout 对象是否是更具体方法的一部分?

这让我感到困惑,因为您在创建 MKAnnotation 对象时设置了 Pin 的属性,但随后在将 pin 放置在 map 上时设置了其他属性。为什么这两个都不是在同一个地方完成的?是否可以这样做?

最佳答案

通常MKAnnotation 协议(protocol)由模型对象实现。模型层不应该知道任何关于 View 的信息。因此,为了遵循 MVC 模式,标注 View 不能成为 MKAnnotation 对象的一部分。

关于ios - 101 iOS MapKit,坐标和是对象变量,但按钮不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9934542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com