无法滚动到容器视图中嵌入的UITableViewController的底部单元格

时间:2018-01-31 17:40:49

标签: ios swift uicontainerview

我在容器视图中嵌入了一个UITableViewController。原型单元格边界大于它出现的容器视图的边界。当尝试查看最底部表格单元格的下半部分时,我可以拖放并查看内容,但在发布时,它会立即反弹返回到该单元格的顶部与容器视图的顶部对齐。请注意,这仅适用于最底部的单元格。

是否有特定的故事板设置允许我一直滚动到单元格的底部,还是这与原型单元格/容器视图的约束有关?

以下是我的容器视图中的故事板设置:

Container View Settings 1 Container View Settings 2

以下是TableView的内容: Table View Settings 1 Table View Settings 2

TableViewController设置: Table View Controller Settings

至于代码:

我有自定义表格视图单元格:

class MakerItemTableViewCell: UITableViewCell {

    @IBOutlet weak var itemImage: UIImageView!
    @IBOutlet weak var itemTitle: UILabel!
    @IBOutlet weak var itemDescription: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

这是我在MainViewController中实例化和添加子视图的地方:

private lazy var itemsViewController: MakerItemsTableViewController = {
        // Load Storyboard
        let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)

        // Instantiate View Controller
        var viewController = storyboard.instantiateViewController(withIdentifier: "MakerItemsTableViewController") as! MakerItemsTableViewController

        // Add View Controller as Child View Controller
        self.add(asChildViewController: viewController)

        return viewController
    }()


private func add(asChildViewController viewController: UIViewController) {
        // Add Child View Controller
        addChildViewController(viewController)

        // Add Child View as Subview
        childView.addSubview(viewController.view)

        // Configure Child View
        viewController.view.frame = view.bounds
        viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

        // Notify Child View Controller
        viewController.didMove(toParentViewController: self)
    }

几个星期前我开始学习Swift,我的很多内容都是根据其他堆栈溢出问题进行调整并拼接到我的项目中的,所以我提前为任何糟糕的约定道歉!

在下面的屏幕截图中,图片的顶部是表格单元格的顶部。顶部横条的底部与容器视图的上边界相遇。如果我单击图像并向上拉,我可以看到它下面的信息是同一个单元格的一部分,同时图像消失在顶部的条形图下方。这正如我所料。单元格中较低的信息填充容器视图区域。但是,只要我放开点击,图像就会自动向下拉,图像的顶部(表格单元格的顶部)再次与容器视图的顶部对齐。

Simulator Screenshot

更新:问题似乎是作为容器视图的UIView的约束。我还没有找到完整的解决方案,但已将其缩小到这个问题。

2 个答案:

答案 0 :(得分:0)

您在此处提到的代码没有任何问题。

您遇到的问题是因为无法确定tableView高度。请尝试调整(增加或减少)或检查其顶部 - 前导 - 尾随约束。

希望它能帮助您解决问题。 :)

答案 1 :(得分:0)

I had to do a few things to get this to work. There was a tab bar that was being carried over from the source controller, and so the table view controller embedded in the container view in the destination controller did not see it. I had to uncheck "Extend Edges Under Bottom Bars" and also under the Simulated Metrics tab, change "Bottom Bar" to "Translucent Tab Bar" so that the table view would have a placeholder to not extend under.