2016-08-29 112 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;