ios - 编程 IBAction 按钮打开/关闭 map 层

标签 ios objective-c if-statement ios6 logic

我正在使用 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/

相关文章:

ios - 如何使用 NSRegularExpression 在 Objective-C 中正确地进行反向引用?

ios - 如何快速创建饼图并填充百分比

objective-c - 关于 NSRunLoop,需要澄清

java - 检查两个日期期间是否重叠时出现错误输出

ios - Firebase Swift 检查用户是否存在无法正常工作

ios - 带有 NSUserActivity 的 Siri 快捷方式 - 事件删除不起作用

ios - 如何在单元格中设置视频的缩略图

ios - 如何将 UILabel 添加到 UIScrollView

mysql - 分组依据有元素

c - 推测条件执行 C/C++