我在常规ViewController中有一个UITableView,我想调整tableview的整个高度。
我通过故事板创建了tableview,并且我正在ViewDidLoad
中的API中加载数据。我在典型的tableview方法中设置了单元格。
override func viewDidLoad() {
self.loadPerformers()
setupTableView(performersTableView)
}
func setupTableView(tableView: UITableView) {
tableView.dataSource = self
tableView.delegate = self
tableView.estimatedRowHeight = 90
tableView.rowHeight = UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if tableView == self.performersTableView {
let performerCell = tableView.dequeueReusableCellWithIdentifier("PerformerCell", forIndexPath: indexPath) as! PerformersTableViewCell
let performer = self.performersArray[indexPath.row]
performerCell.performerPic.image = getPerformerImage(performer.english_name)
performerCell.performerName.text = performer.english_name + " " + performer.japanese_name
cell = performerCell
}
return cell!
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var count:Int?
tableView.separatorStyle = UITableViewCellSeparatorStyle.None
tableView.separatorColor = UIColor.clearColor()
tableView.allowsSelection = false
if tableView == self.performersTableView {
count = self.performersArray.count
}
return count!
}
我遇到的问题是,在加载数据后,tableview保持相同的高度。下面我加载了四个项目,但它只显示2.桌面视图高度没有变化。
我尝试了一些事情,其中包括改变viewWillAppear
中的tableview框架的高度:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let newHeight = self.performersTableView.rowHeight * CGFloat(self.numberOfPerformers)
self.performersTableView.frame = CGRectMake(performersTableView.frame.origin.x, performersTableView.frame.origin.y,
performersTableView.frame.size.width, newHeight)
}
这没有任何作用,所以我在渲染过程中误解了一些东西。如何使用我想要的高度重新显示表格?
答案 0 :(得分:1)
我有两种解决方案可以解决您的问题:
如果要根据Tableview Cells设置Tableview的高度。 首先从服务器获取数据时重新加载Tableview,重新加载tableview后,您将使用以下代码获得填充tableview的内容高度:
self.performersTableView.contentSize.height
然后将此高度设置为您的tableview框架。
在设计中,设置tableview的修复高度并设置约束的引用,并在重新加载tableview之后:
self.performersTableViewHeightReference.constant = self.performersTableView.contentSize.height
我希望这可以帮助你。
答案 1 :(得分:0)
[self.theTableView setNeedsLayout];
[self.theTableView layoutIfNeeded];
在setupTableView
中添加此代码,numberOfRowsInSection
是数据计数。如果你想根据cellForRowAtIndexpath
:cell.detailTextLabel.numberOfLines = 0;