2016-08-29 170 views
0

我有一个普通的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

我已经尝试了一些东西,其中正在改变的tableview框架的高度在viewWillAppear

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

是在故事板/ xib中创建tableview吗? – Lahav

+0

您是否将numberOfRowsInSection设置为self.performersArray.count? –

+0

显示你想要实现的内容,你是否想根据行数改变tableview的高度?或者只是想通过增加一些高度使它看起来像设计? – Tj3n

回答

1

我对你的问题的解决方案2:

  1. 如果你想设置基于泰伯维细胞泰伯维的高度。 所以首先,当你从服务器获取数据刷新您的泰伯维和重装tableview中后,你将使用此代码得到填补的tableview的内容高度:

    self.performersTableView.contentSize.height 
    

    然后设置这个高度,你的tableview框架。

  2. 在设计,实现代码如下的设置固定高度和约束的设定的参考和重装的tableview后:

    self.performersTableViewHeightReference.constant = self.performersTableView.contentSize.height 
    

我希望这可以帮助你。

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

setupTableViewnumberOfRowsInSection是数据计数添加该代码。并且如果你还想根据内容编写代码cellForRowAtIndexpathcell.detailTextLabel.numberOfLines = 0;