我正在尝试向UITableView行添加一个按钮,该行将通过NSURL会话与MySQL数据库进行交互。我已经成功地将按钮添加到空白视图控制器,但是当与UITableView单元重复时它不起作用。没有错误给代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell
cell.textLabel?.text = self.textArray.objectAtIndex(indexPath.row) as? String
let button = UIButton(type: UIButtonType.System)
button.frame = CGRectMake(100, 100, 120, 50)
button.backgroundColor = UIColor.greenColor()
button.setTitle("Test Button", forState: UIControlState.Normal)
button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
cell.addSubview(button)
return cell
}
答案 0 :(得分:3)
您的方法存在两个问题:
当您将子视图添加到UITableViewCell
时,您应该将它们添加到单元格contentView
,而不是直接添加到单元格。
正在重复使用Cell。当用户滚动并且单元格不再可见时,它将被添加到表格视图的单元格队列中。然后,当表需要显示一个新单元时,它会从该队列中出列旧单元并再次显示它。因为早先已经显示过单元格,所以它已经有一个按钮。但是你要在单元格中添加另一个按钮。即使它已经有一个按钮。因此,在添加按钮之前,您应该检查单元格是否已有按钮。但是,更好的方法是创建自己的UITableViewCell
子类,并在单元格的初始化程序中添加按钮。
只需仔细检查:你确定你的手机足够高以显示按钮吗?您在按钮上设置的框架需要一个高度至少为150的单元格。