Swift 3 - 在UIScrollView中切断了UITableView

时间:2017-05-12 08:45:19

标签: ios swift uitableview swift3 autolayout

我的tableview存在滚动视图问题。桌子最后被切断了。

cut off

这是我的故事板(对表格禁用了滚动)。该按钮只是我真实应用中某些内容的占位符:

storyboard

这是桌级课程(我从昨天的问题中知道,我只能解决问题):

class Table: UITableView, UITableViewDataSource, UITableViewDelegate{

    let sections: [String] = ["Section 1", "Section 2", "Section 3"]
    let s1Data: [String] = ["Row 1", "Row 2", "Row 3"]
    let s2Data: [String] = ["Row 1", "Row 2", "Row 3"]
    let s3Data: [String] = ["Row 1", "Row 2", "Row 3"]

    var sectionData: [Int: [String]] = [:]

    override func awakeFromNib() {
        super.awakeFromNib()

        delegate = self
        dataSource = self

        register(UINib(nibName: "Cell", bundle: nil), forCellReuseIdentifier: "Cell")

        sectionData = [0:s1Data, 1:s2Data, 2:s3Data]

        rowHeight = UITableViewAutomaticDimension
        estimatedRowHeight = 96.0

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)
        -> Int {
            return (sectionData[section]?.count)!
    }

    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int)
        -> String? {
            return sections[section]
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return sections.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        var cell = tableView.dequeueReusableCell(withIdentifier: "Cell")

        return cell!

    }

}

单元格本身的高度为340,表格中应为其中的三个。

ViewController对表的高度和表本身有约束。我在stackoverflow上阅读了有关此解决方案的内容。当我在约束 - 常量 - 设置断点时,高度约为1000,所以此时这是正确的。:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var tableHeight: NSLayoutConstraint!
    @IBOutlet weak var table: Table!

    override func viewDidLoad() { 
        super.viewDidLoad()  
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        tableHeight.constant = table.contentSize.height
    }

}

我尝试了不同的建议如何摆脱问题。但不知怎的,我想念一些东西。有人可能会给我一个建议。

1 个答案:

答案 0 :(得分:0)

  • 我根据您的要求设置了所有约束 ,我已经安装了顶部,左侧,右侧和底部约束 ScrollView和ContentView并给出相等的宽度和高度 contentView到主视图,因此scrollview将自动获取 内容大小越大。

  • 如果你只想滚动ScrollView而不是你的tableView 你可以给一个固定的高度约束TableView,创建一个固定高度Constarint的NSLayoutConstraint的 @IBOutlet 并更新它 通过计算所有行高来恒定!

第一种方法:

  • 删除固定高度约束
  • 尝试将tableView的底部约束赋予ScrollView(不是 到contentView - (一个在ScrollView中的UIView))

第二种方法:

在viewDidLoad方法中尝试这个:

从底部为tableView提供填充:

这里我给了tableView底部一个20.0固定的填充,你可以根据你的要求给出。

<p:scrollPanel mode="native"...>

这是演示链接:https://drive.google.com/file/d/0B-VsxWuYK8apODhXSnc1aVM5djQ/view