【问题标题】:Is it possible to implement tableview inside tableview cell in swift 3?是否可以在 swift 3 中的 tableview 单元格中实现 tableview?
【发布时间】:2018-03-22 08:05:29
【问题描述】:

我在将 tableview 放入 uitableview 单元格时遇到问题。现在我将实施 cmets 并回复。并且回复应该在你要去cmets的里面。 所以我将在 tableview 单元格中实现帖子的 cmets,在其中回复其他 tableview 单元格中的所有 cmets。 任何建议或其他方式来实现这些场景!

【问题讨论】:

  • 问了一个类似的问题here
  • 虽然有可能,但通常不是一个好主意。 Apple 建议您避免嵌套可滚动元素,因为这样他们就必须为哪一个收到给定的滚动手势而争吵,这不是一个好的用户体验。这适用于 tableView 内的 tableView、collectionView 内的 scrollView 等。我建议效仿许多社交媒体应用的做法,即在堆栈视图中显示 1 或 2 个嵌套回复,并通过可点击的操作转到不同的屏幕以查看所有回复。
  • 你是怎么解决这个问题的?

标签: ios swift


【解决方案1】:

This Question is duplicate. 用 Swift 回答

第一种方法:

  1. 为子tableView创建一个子类并覆盖intrinsicContentSize。

         class MyOwnTableView: UITableView {
        override var intrinsicContentSize: CGSize {
            self.layoutIfNeeded()
            return self.contentSize
        }
    
        override var contentSize: CGSize {
            didSet{
                self.invalidateIntrinsicContentSize()
            }
        }
    
        override func reloadData() {
            super.reloadData()
            self.invalidateIntrinsicContentSize()
        }
    }
    
  2. 在 Interface builder 中,将子 tableView 的类更改为 MyOwnTableView(UITableView 的子类)。

  3. 为父表视图和子表视图设置自动行高。

        tableView.estimatedRowHeight = 60.0;
        tableView.rowHeight = UITableViewAutomaticDimension;
    

第二种方法: 1.为子tableView创建一个任意值的高度约束,并连接一个设置子tableView高度的IBOutlet。 2.设置高度约束的常量为tableView.contentSize.height

    self.tableViewHeight.constant = self.tableView.contentSize.height

【讨论】:

    【解决方案2】:

    是的,这是可能的,但不是推荐的实施方式。如果您想在下面显示对每个帖子的回复以及评论,我建议您通过部分实施。每个部分应包含三种类型的单元格,如下所述:

    • PostCellView
    • 回复CellView
    • 评论单元视图

    在这种情况下,部分数将是帖子数,每个部分的总行数将为 1(帖子)+ N(其中 N 是回复总数)+ 1(评论)。

    使用这种方法,您可以通过 Apple 提供的易于实现的动画添加/删除回复。

    希望对您有所帮助,如有任何疑问,请随时询问。

    【讨论】:

      猜你喜欢
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2015-04-20
      相关资源
      最近更新 更多