tableView reloadData

9 篇文章 0 订阅

1.需求说明:从页面1点击按钮,将页面刷新成页面2的样纸。

2.思路:在页面1的tableView最后一行添加一个按钮,点击按钮后,使用tableView reloadData方法重新加载页面,修改页面内容及行数。

3.问题:发现在点击后,页面行数及内容确实有修改,但是按钮并未被reloadData方法给干掉,这让我十分恼火。如下图:


4.代码如下:

            if(!(self.alarm?.isConfirm)!as Bool){
                var button:UIButton =UIButton()
                button.frame = CGRectMake(10, 5, self.view.bounds.width-20,40)
                button.enabled = true
                button.setTitle(Common.getText("alarm.detail.acknowledge", tableName:"alarmtxt"), forState: .Normal)
                button.addTarget(self, action:"acknowledged", forControlEvents: .TouchUpInside)
                button.setTitleColor(UIColor.whiteColor(), forState:UIControlState.Normal)
                button.backgroundColor = UIColor(red: 113/255.0, green:180/255.0, blue:81/255.0, alpha:1)
                button.titleLabel?.font =UIFont.systemFontOfSize(CGFloat(CustomFont.TOPBARTITLE))
                cell?.addSubview(button)
            }else{
                cell?.textLabel?.text =Common.getText("alarm.detail.acknowledgedby",tableName:"alarmtxt")
                cell?.detailTextLabel?.text =self.alarm?.confirmUser
            }

  

5.检查发现,reloadData之后确实是走的else这一段的代码,并无什么明显错误。
于是我将button移到循环外,在else里使用 button. removeFromSuperview ()方法试图删除残留的按钮,失败。
通过各种在else中对button的背景色,位置的修改,均无效,可见在else中并没有操作到我们看到的这个button对象,操作的只是
var button:UIButton = UIButton()
里新的button,而它并没有在我们的列表中。

6.解决方式:
将button定义为全局变量,在调用tableView.reloadData之前,调用其button.removeFromSuperview()方法,将其移除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值