IOS折线图二

上周把项目的折线图给做了下,今天想着把它完善完善,自己设置了不同的数据源来测试,哈哈,还真遇到问题了, 就是给图表设置折点数为0时,视图显示的还是原来的,由于数据为空,应该将其设置为空,所以想着怎么把ScrollView中的子视图情况。由于标题和折点值是用Label,可以删除View。但画的线和点是通过贝塞尔曲线添加到图层上了,还要把子视图的layer删掉。可是问题来了, 先上删除代码:


int count = [self.layer.sublayers count];
    for (int i = 0; i<count; i++) {
        [self.layer.sublayers[i] removeFromSuperlayer];
    }

但结果并不理想:

 

当多次点击日按钮时,会慢慢的删除,感觉蛮怪的,觉得可苦逼了。后来问了下oliver,大神就是大神,一会就搞出原因了。原来每次删除一个父视图之后就会时父视图的子图层个数-1,而如果每次都是用i索引删除就会遗漏一些子图层,修改之后就完美了。


int count = [self.layer.sublayers count];
    for (int i = 0; i<count; i++) {
        [self.layer.sublayers[0] removeFromSuperlayer];
    }

还有就是之前博客也提到过的for in 和for(int i=0;......)的区别。http://www.cnblogs.com/5ishare/p/4372398.html

我用下面的代码遍历时也是提示错误:was mutated while being enumerated 遍历的时候不能删除


 for (CALayer *layer in self.layer.sublayers) {
        [layer removeFromSuperlayer];
    }

 正确的代码更新在折线图那篇博客中了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值