【问题标题】:How to change subview of uitableviewcell programmatically?如何以编程方式更改 uitableviewcell 的子视图?
【发布时间】:2016-02-12 06:31:34
【问题描述】:

我正在开发允许用户像 instagram 一样分享照片的应用程序。用户可以发布带有或不带有标题的照片,因此标题可以为空,并且照片仍会发布到他们的提要中。我的客户想在标题为空时删除视图,并且我正在使用带有自动布局的 uitableview 单元格来发布帖子。当我尝试将标题视图高度约束连接到我的视图控制器时,它给了我一个错误,它说约束出口无法连接到重复的内容。因此,我尝试在我的代码中执行此操作,但它并没有改变任何内容。

let captionString = object["caption"] as? String
    let captionView = cell.contentView.viewWithTag(111)

    if captionString == ""{

        captionView?.frame = CGRectMake(0 , 0, captionView!.frame.width, 0)

    }else{


        (cell.contentView.viewWithTag(12) as! UILabel).text = captionString

    }

我将上面的代码放在 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 中,并且我在 uitableviewcell 内的每个视图中都给出了约束,所以如果我可以更改标题视图高度其他视图会自动调整大小。如何更改标题视图的高度?

【问题讨论】:

    标签: ios iphone uitableview uiview autolayout


    【解决方案1】:

    相关信息在这里:

    Outlets cannot be connected to repeating content iOS

    当您使用无效且无法正常工作的自动布局时,您无法设置框架。

    要么有 2 种不同样式的单元格,并根据数据可用性选择要出列的单元格,要么添加约束,以便您可以将标签高度折叠为零。

    【讨论】:

    • 那么唯一的方法是为单元格创建子类?你能给出我该怎么做的任何相关链接吗?
    • 你应该这样做,你的标签方法可以工作,但这不是一个好的解决方案
    • 如何使用 viewwithtag 做到这一点?为什么这不是一个好的解决方案?
    • 因为代码会一团糟。采用第一个选项并有 2 个不同的单元格,它更简单、更干净
    • 是的,我的代码很乱,这是我在 ios 上的第一个项目,我现在正在修复它。我会尝试使用第一个解决方案。感谢您的回答
    【解决方案2】:

    您可以创建高度约束的出口并将高度设置为0

    如:

    @IBOutlet var captionViewHeightConstraint: NSLayoutConstraint!
    captionViewHeightConstraint.constant = 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多