2016-12-12 48 views
0

起初我想根據其內容的大小以創建的UITableView具有動態的高度,隨後計算器的問題要克服的情況。如何調整的TableView高度時,該項目的一個刪除了

func autoAdjustToTableView(){ 

     numberTableView.frame = CGRect(x: numberTableView.frame.origin.x, y: numberTableView.frame.origin.y, width: numberTableView.frame.size.width, height: numberTableView.contentSize.height) 

    } 

而在這個問題有人建議我應該把這個事情從viewDidAppear,也從viewDidLayoutSubViews也是他所謂

的答案:那通過這個問題去後執行

viewDidLayoutSubviews

所以我的第一個問題,爲什麼我必須在我的代碼viewDidLayoutSubviews ??

雖然它的工作正常,直到我從tableView中刪除一個項目並調用相同的功能,但沒有讓我感受到動態變化。這是我爲將其取出:

let alertController = UIAlertController(title: "title", message: "message", preferredStyle:UIAlertControllerStyle.alert) 

     alertController.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default) 
     { action -> Void in 

      return 

     }) 
     alertController.addAction(UIAlertAction(title: "Remove", style: UIAlertActionStyle.destructive) 
     { action -> Void in 

      self.numberArray.remove(at: indexPath.row) 
      self.autoAdjustToTableView() 
      self.numberTableView.reloadData() 

     }) 
     self.present(alertController, animated: true, completion: nil) 

     } 

什麼需要做的是去除項目以改變它的高度?

回答

0

首先您需要調用reloadData來更改tableView中的單元格。您需要調用autoAdjustToTable視圖來更改高度。

 self.numberArray.remove(at: indexPath.row) 

     self.numberTableView.reloadData() 
     self.autoAdjustToTableView() 
+0

是的,它確實工作!但我想知道如何以及爲什麼? – Fay007

+0

當你調用reloadData時,你告訴tableview再次創建它的內容。所以你應該先重載數據,然後根據其內容計算tableview的高度。 – Mohammadalijf

相關問題