gpt4 book ai didi

iphone - CommentsView 委托(delegate)和 MKAnnotation

转载 作者:行者123 更新时间:2023-12-03 21:20:57 25 4
gpt4 key购买 nike

所以我创建了一个类 X,如下所示:

@interface X : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
NSString * title;
NSString * subtitle;
UIImage * image;
NSInteger * tag;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * subtitle;
@property (nonatomic, retain) UIImage * image;
@property (nonatomic, readwrite) NSInteger * tag;

@end

里面:

  • (void)mapView:(MKMapView *)mapView注释View:(MKAnnotationView *) View calloutAccessoryControlTapped:(UIControl *)控件

我希望能够访问 X 拥有的标签属性。这怎么可能?我可以做[控制标签]吗?这应该如何运作?

最佳答案

对于第二部分,警告的原因是您将纯整数分配给 NSInteger 指针。 NSInteger 的类型为 intlong

所以你正在做(错误):

NSInteger * tag = 2;

编辑:

这是使用 NSInteger 的方式:

NSInteger myi = 42;
NSLog(@"int: %d", myi);

NSInteger * i = &myi; // i is a pointer to integer here
*i = 43; // dereference the pointer to change
// the value at that address in memory
NSLog(@"int: %d", myi);

如上所述,您正在尝试:

NSInteger * i = &myi;
i = 2; // INCORRECT: i is an pointer to integer

tag 声明为 NSInteger 而不是 NSInteger* 并在属性中使用 assign (我会给你确切的代码,但我使用的是 linux atm ...)。

编辑结束

对于第一部分,我不确定 X 的对象如何传递给您的方法,但您应该能够执行 [yourobject tag]如果 tag 方法是该方法用于从对象 X 获取数据的接口(interface)的一部分。

我的意思是 MKAnnotation 协议(protocol)没有 tag 属性,因此您必须将对象类型转换为您的对象类型,例如X *anX = (X*)self.annotation; ,或者无论 annotation 对象来自何处,那么您应该能够访问标签 [anX tag ] - 如果这是您的 X 对象

我找到了这个example code in Apple docs that uses custom annotation .

在示例中,注释是在 View 上设置的。

绘制 View 时,它使用来自实现注释协议(protocol)的对象的数据。在访问值之前,该对象被类型转换为实际对象(请参阅 View 的绘制方法)。

您可以在 Controller 中看到如何在 View 的 regionDidChangeAnimated 中设置新注释。

关于iphone - CommentsView 委托(delegate)和 MKAnnotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869174/

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