之后调整TableView高度

时间:2016-08-29 03:17:27

标签: ios swift uitableview

我在常规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.桌面视图高度没有变化。

enter image description here

我尝试了一些事情,其中​​包括改变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)
}

这没有任何作用,所以我在渲染过程中误解了一些东西。如何使用我想要的高度重新显示表格?

2 个答案:

答案 0 :(得分:1)

我有两种解决方案可以解决您的问题:

  1. 如果要根据Tableview Cells设置Tableview的高度。 首先从服务器获取数据时重新加载Tableview,重新加载tableview后,您将使用以下代码获得填充tableview的内容高度:

    self.performersTableView.contentSize.height 
    

    然后将此高度设置为您的tableview框架。

  2. 在设计中,设置tableview的修复高度并设置约束的引用,并在重新加载tableview之后:

    self.performersTableViewHeightReference.constant = self.performersTableView.contentSize.height
    
  3. 我希望这可以帮助你。

答案 1 :(得分:0)

[self.theTableView setNeedsLayout];
[self.theTableView layoutIfNeeded];

setupTableView中添加此代码,numberOfRowsInSection是数据计数。如果你想根据cellForRowAtIndexpathcell.detailTextLabel.numberOfLines = 0;

中的内容写代码来扩展单元格