繁体   English   中英

如何以编程方式向UITableView行添加按钮?

[英]How to programmatically add a button to UITableView row?

我正在尝试向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
}

您的方法有两个问题:

  1. 将子视图添加到UITableViewCell您应该将它们添加到单元格的contentView而不是直接添加到单元格。

  2. Cell正在被重用。 当用户滚动并且单元格不再可见时,它将被添加到表视图的单元格队列中。 然后,当表需要显示一个新单元时,它会从该队列中出列旧单元并再次显示它。 因为早先已经显示过单元格,所以它已经有一个按钮。 但是你要在单元格中添加另一个按钮。 即使它已经有一个按钮。 因此,在添加按钮之前,您应该检查单元格是否已有按钮。 但是,更好的方法是创建自己的UITableViewCell子类,并在单元格的初始化程序中添加按钮。

只需仔细检查:你确定你的单元格足够高以显示按钮吗? 您在按钮上设置的框架需要一个高度至少为150的单元格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM