我正在使用 IBAction 按钮打开 map 图层。点击按钮时,此代码将其打开。
- (IBAction)lightingLayer:(id)sender {
[_mapView addTileSource:[[RMMapBoxSource alloc] initWithMapID:@"MapID"]];
}
现在我想对其进行调整,以便当用户点击一次时,图层会打开。当它再次被敲击时,它会打开等等。我通过从类似示例中借用代码来尝试它,但它不起作用。
- (IBAction)lightingLayer:(id)sender {
_Bool *isON = NULL;
isON = !isON;
if(isON) {
[_mapView addTileSource:[[RMMapBoxSource alloc] initWithMapID:@"MapID"]];
} else {
[_mapView removeTileSource:[[RMMapBoxSource alloc] initWithMapID:@"MapID"]];
}
这个标记,不兼容的整数到从 int 分配 bool 的指针转换。有人可以提供一些简单的代码来帮助我实现我的目标。在此先感谢您的时间。
最佳答案
此错误是因为您正在将 bool 值分配给指针。指针不过是一个整数值,它以十六进制数的形式保存内存位置。
但实际上,要完成您想要的,您不需要指针,只需使用一个属性来存储此 bool 并创建一个切换功能。
声明这个私有(private)属性:
@property (strong, assign) BOOL isChecked;
在你的行动中:
- (IBAction)lightingLayer:(id)sender {
self.isChecked = !self.isChecked;
if(self.isChecked) {
[_mapView addTileSource:[[RMMapBoxSource alloc] initWithMapID:@"MapID"]];
} else {
[_mapView removeTileSource:[[RMMapBoxSource alloc] initWithMapID:@"MapID"]];
}
}
Ps:我只关注这里解释你现在得到的错误。这种添加/删除磁贴逻辑也可能是错误的。我认为您仍然必须保存相同的引用以便添加和稍后删除。
关于ios - 编程 IBAction 按钮打开/关闭 map 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393591/