uitableview的高度在swift中不会dynamic变化?

我有麻烦了。我有一个城市列表,我想在UITableView显示城市,我禁用了UITableView的滚动,因为我不想显示滚动。

当我dynamic更改为UITableView的高度时,它不会更改,UITableView不会显示所有城市。 在代码下面。 请看看。

 import UIKit class FlightDetailsOneWayViewController: UIViewController { var flightDetailArr:[FlightDetailsOneWay] = [FlightDetailsOneWay]() @IBOutlet var tableView: UITableView! @IBOutlet var scrollview: UIScrollView! override func viewDidLoad() { super.viewDidLoad() flightDetailArr.append(FlightDetailsOneWay(depCity: "London")) flightDetailArr.append(FlightDetailsOneWay(depCity: "China")) flightDetailArr.append(FlightDetailsOneWay(depCity: "Singapore")) flightDetailArr.append(FlightDetailsOneWay(depCity: "Dubai")) self.tableView.scrollEnabled = false var cellHeight = CGFloat(self.tableView.rowHeight) var totalCity = CGFloat(flightDetailArr.count) var totalHeight = cellHeight * totalCity self.tableView.frame.size.height = CGFloat(totalHeight) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { return flightDetailArr.count } func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { let cell:FlightDetailsCell = tableView.dequeueReusableCellWithIdentifier("FlightDetail") as FlightDetailsCell let flight = flightDetailArr[indexPath.row] cell.setCell(flight.depCity) return cell } } class FlightDetailsOneWay { var depCity = "" init(depCity: String) { self.depCity = depCity } } class FlightDetailsCell: UITableViewCell { @IBOutlet var depCity: 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 } func setCell(depCity: String) { self.depCity.text = depCity } } 

低于上述代码的预览。

预习

正如对这个答案所要求的解释非常详细。

按照我的另一个答案“移动视图的约束”来了解如何更新布局约束。

并根据您的评论关于如何连接NSLayoutConstraintvariables与高度约束? 如下:

  1. 转到故事板。
  2. select你添加了约束的UIView 。 单击约束图标查看所有约束。 现在在下面的图片中,我只添加了一个限制,你可能会发现更多。 检查你有哪些限制改变了它的属性。

在这里输入图像说明

  1. 现在点击视图控制器,然后点击显示连接检查器 。 在这里你可以看到你的视图控制器中定义的所有IBOutlets。 如下图所示,为了简单起见,我只创build了一个IBOutlet,它是heightConstraint

在这里输入图像说明

  1. 这就是你如何添加连接到约束variables。

在这里输入图像说明

如果您的所有单元格都具有相同的外观,则可以使用原型单元格:

一个完整的教程,使用原型单元格进行项目

要么

第二个更快的阅读

你也可以使用

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 42.0 } 

如果您dynamic调整高度单元格的大小,此function是完美的。

你只需要使用: beginUpdates()endUpdates()使其工作。