0

我对 ios 完全陌生,但我可以TableView使用动态单元格在情节提要中创建具有固定约束的内容TableView。现在我必须在一个中创建许多视图,例如一个ImageView、一个Button、很多Labels和两个 TableView ViewController。那些 TableView 是动态的,可以从 API 获取值,即使值TableView可能会出现,有时可能不会出现,因此如果 TableView 值为空,我应该离开视图。

  1. 我想我想根据 API 的值来控制 TableView 的高度。
  2. 如果我使用 Tableview.alpha = 0 来隐藏它只是隐藏的视图,但我想离开那个视图。

我参考了这个链接iOS: Dynamically set UITableView height in Swift

但我不知道如何使用这段代码。请帮我。这个问题是我最后的希望。TIA。

4

1 回答 1

0

以下代码使用约束动态设置高度。此代码应该有效。

视图控制器.Swift

  class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet var tableView: UITableView!
@IBOutlet var tableviewHeightConstraint: NSLayoutConstraint! //This constraint is your tableview height constraint

var arrayItems = ["iOS", "Swift", "Apple", "Program", "output", "code","viewController","tableview"]

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.dataSource = self
    self.tableView.delegate = self

    self.tableView.register(UINib(nibName: "heightTableViewCell", bundle: nil), forCellReuseIdentifier: "heightTableCell")
     self.tableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.arrayItems.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCell(withIdentifier: "heightTableCell") as! heightTableViewCell
    cell.label.text = self.arrayItems[indexPath.row]
    // Your Tableview Height (Dynamically Change the height) 
    self.tableviewHeightConstraint.constant = self.tableView.contentSize.height
    return cell
  }
}

heightTableViewCell.swift

 class heightTableViewCell: UITableViewCell {
 @IBOutlet var label: 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
 }

}

注意:scrollView 应该取消选中 Attribute Inspector 中的滚动启用选项

于 2018-05-11T12:44:58.507 回答