uitableview在swift ios中的高度不能动态改变吗?

10 浏览
0 Comments

uitableview在swift ios中的高度不能动态改变吗?

我遇到了麻烦。我有一个城市列表,我想在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

let cellHeight = CGFloat(self.tableView.rowHeight)

let totalCity = CGFloat(flightDetailArr.count)

let 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

}

}

以上是代码的预览图。

0
0 Comments

在Swift iOS中,UITableView的高度不会动态改变,出现这个问题的原因是没有正确连接和更新高度约束。解决方法如下:

1. 打开Storyboard,在你添加了约束的UIView上点击"Constraints"图标,查看所有的约束。找到你想要改变属性的约束。

2. 点击"View Controller",打开"Show the connection inspector"。在这里你可以看到在你的视图控制器中定义的所有IBOutlet。选择你想要连接的约束变量。

3. 这样你就可以将约束变量连接起来了。

当我们在UITableView上应用高度约束时,它可能不会在模拟器中显示。这可能是因为初始的高度约束常量值不正确。

文章结束。

0
0 Comments

问题的原因是UITableView的高度无法动态改变。解决方法有两种:一种是使用原型单元格,如果所有的单元格都具有相同的外观,可以使用原型单元格;另一种方法是在代理方法中使用tableView:heightForRowAtIndexPath:函数来动态设置单元格的高度,并在需要改变高度时调用beginUpdates()和endUpdates()方法。

使用原型单元格的方法可以参考这两个教程:第一个教程第二个教程

使用tableView:heightForRowAtIndexPath:的方法示例代码如下:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

return 42.0

}

使用beginUpdates()和endUpdates()方法可以在需要改变高度时调用,示例代码如下:

tableView.beginUpdates()

// 改变高度的操作

tableView.endUpdates()

以上是该问题的原因和解决方法的简要介绍。

0