tableView reloadData

来源:互联网 发布:手机淘宝注册账号申请 编辑:程序博客网 时间:2024/06/05 04:40

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