xy371661665 2015-03-23 07:25 采纳率: 33.3%
浏览 1608

iOS 里uitableview的问题

在UITableView中,改变cell的alpha 值,在向下拉重用时在visiableCells中alpha 值没有改变

这是cellForRowAtIndexPath函数里最底下的测试代码,输出此时的cell的地址和alpha值,以及此时visiableCells中所有cell的地址和alpha值:

printf("第%d个cell:<%p>\t alpha:%f\n",no++,cell,cell.alpha);
printf("visiableCells里有%ld个元素\n",self.tableView.visibleCells.count);
for (XYTableCell* cell in self.tableView.visibleCells) {
printf("%p\t",cell);
printf("这个cell的alpha值为:%f\n",cell.alpha);

}

return cell;

    运行之后得到的结果是:
    第10个cell:<0x7f858b65c7e0>  alpha:0.500000
    //第十个cell在return前alpha值是0.5

visiableCells里有8个元素
0x7f858b51af60 这个cell的alpha值为:0.500000
0x7f858b528990 这个cell的alpha值为:1.000000
0x7f858b52f0f0 这个cell的alpha值为:0.500000
0x7f858b535320 这个cell的alpha值为:0.500000
0x7f858b53bf40 这个cell的alpha值为:0.500000
0x7f858b695500 这个cell的alpha值为:1.000000
0x7f858b729c00 这个cell的alpha值为:1.000000
0x7f858b4afa40 这个cell的alpha值为:1.000000
第11个cell: alpha:0.500000
visiableCells里有8个元素
0x7f858b528990 这个cell的alpha值为:1.000000
0x7f858b52f0f0 这个cell的alpha值为:0.500000
0x7f858b535320 这个cell的alpha值为:0.500000
0x7f858b53bf40 这个cell的alpha值为:0.500000
0x7f858b695500 这个cell的alpha值为:1.000000
0x7f858b729c00 这个cell的alpha值为:1.000000
0x7f858b4afa40 这个cell的alpha值为:1.000000
//然而返回之后就变成1.0了,这是为什么?
0x7f858b65c7e0 这个cell的alpha值为:1.000000

  • 写回答

2条回答 默认 最新

  • __block小凡 2015-03-25 02:10
    关注

    是想将所有的cell都设为半透明吗?那就写到 if(cell == nil){} 里面;如果只是特殊的几个要求是透明的,或者是特殊机制下是透明的,你可能出现了复用问题

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog