以编程方式添加到 UITableViewCell 的 UIButtons 永远不会出现

Posted

技术标签:

【中文标题】以编程方式添加到 UITableViewCell 的 UIButtons 永远不会出现【英文标题】:UIButtons programmatically added to UITableViewCell never appear 【发布时间】:2010-10-06 00:13:01 【问题描述】:

尝试创建一个充满按钮的简单表格,其中按钮是在运行时生成的;表格出现了,并且有正确的行数等,但行似乎是空的。

    public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
    
        // The NavItem class is a "Josh Bloch enum" with n ordered members
        NavItem item = NavItem.ByOrder(indexPath.Row);
        var cell = tableView.DequeueReusableCell(item.Name);
        if (cell == null)
        
            cell = new UITableViewCell(UITableViewCellStyle.Default, item.Name);
            UIButton button = UIButton.FromType(UIButtonType.RoundedRect);
            button.SetTitle(item.Name, UIControlState.Normal);
            cell.ContentView.AddSubview(button);
            // cell.TextLabel.Text = item.Name;
            // cell.Accessory = UITableViewCellAccessory.DisclosureIndicator;
        
        return cell;
    

没有按钮,注释掉的纯文本版本可以正常工作。

我是 ios 的新手,所以我认为这里缺少关于组件大小、定位或布局的一些东西——有人知道它是什么吗?

【问题讨论】:

【参考方案1】:

通常当我遇到这种问题时,这是因为我没有为对象指定框架。因此,在此示例中,尝试在将按钮添加到单元格的子视图之前设置按钮的框架。例如

button.Frame = new RectangleF(xcord, ycord, width, height);

请注意,因为您将按钮添加到单元格的子视图,所以 x 和 y 坐标是相对于该单元格的。

【讨论】:

谢谢 - 似乎可以做到,但现在我需要弄清楚如何设置表格行高。 :) 好的,GetHeightForRow()——这很简单。

以上是关于以编程方式添加到 UITableViewCell 的 UIButtons 永远不会出现的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式添加到 UITableViewCell 的 UIButtons 永远不会出现

如何以编程方式将约束添加到 UITableViewCell 的默认 imageView 和 textLabel

以编程方式在 UITableViewCell 上设置约束

以编程方式在 UITableViewCell 上显示删除按钮

如何以编程方式快速向 UITableViewCell 内的 UIStackView 添加约束?

如何以编程方式在 UITableViewCell 中添加自定义视图?