uitableview高度在swift ios中不会动态变化?

vij*_*iju 2 uitableview ios swift

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

当我动态更改为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
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面代码的预览下面.

预习

Kam*_*pai 5

由于这个答案所需的解释非常详细.

请关注我的另一个答案"使用约束移动视图"以了解如何更新布局约束.

根据你关于如何连接NSLayoutConstraint变量和高度限制的评论?如下:

  1. 去故事板.
  2. 选择UIView您已添加约束的位置.单击Constraints图标以查看所有约束.现在在下面的图像我只添加了一个你可能会发现更多的约束.检查您更改了它的属性的约束.

在此输入图像描述

  1. 现在单击视图控制器并单击" 显示连接检查器".在这里,您可以看到视图控制器中定义的所有IBOutlet.如下图所示,您可以看到我为了简单起见只创建了一个IBOutlet heightConstraint.

在此输入图像描述

  1. 这就是如何添加与约束变量的连接.

在此输入图像描述