2017-08-26 158 views
0

我在自定義ViewController中調用TableView。在我的UITableView中,我的細胞重疊。像這樣自定義ViewController中的UITableView:自定義UITableViewCells重疊

TableviewCells Overlapping

在故事板編輯器,我行高度在63pts設置爲自定義,但它們看起來像他們實際使用默認的高度,該電池是,如果你不加以制止,自定義框。

像在其他一些解決方案嘗試執行heightForRowAt函數,但它什麼也沒有做。我試過使用大量的淫穢數字,但結果總是和以前一樣。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
    if(self.view.traitCollection.horizontalSizeClass == .compact || 
     self.view.traitCollection.verticalSizeClass == .compact) { 
     cellHeight = 55 
     return 55 
    } 
    else{ 
     return 63 
    } 
} 

在解決方案的唯一的事,到目前爲止,看起來都看好我所看到的是這一個。 iOS UITableViewCell overlapping 我試過在實現我的自定義TableViewCell類文件的prepareForReuse功能,但我不知道我其實是應該增加的功能,所以我就被稱爲超級功能,並增加了打印語句

---全面的TableView代碼---

extension SavingViewController: UITableViewDataSource { 
    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

    func tableView(_ tableView: UITableView, 
        numberOfRowsInSection section: Int) -> Int { 
     return items.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cellIdentifier = "WishlistTableViewCell" 

     guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? WishlistTableViewCell else { 
      fatalError("The dequeued cell is not an instance of WishlistTableViewCell.") 
     } 

     cell.selectionStyle = .none 


     return cell 
    } 


    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    { 
     if(self.view.traitCollection.horizontalSizeClass == .compact || 
      self.view.traitCollection.verticalSizeClass == .compact) { 
      cellHeight = 55 
      return 55 
     } 
     else{ 
      return 63 
     } 
    } 

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     // Return false if you do not want the specified item to be editable. 
     return true 
    } 

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
     if editingStyle == .delete { 
      /* 
      let resultRemoving = bookmarks[indexPath.row] 
      if var bookmarkData = defaults.object(forKey:"bookmarkDict") as? [String: [String]] { 
       bookmarkData.removeValue(forKey: resultRemoving.resultURL) 
       defaults.set(bookmarkData, forKey:"bookmarkDict") 
      } 
      defaults.synchronize() 
      */ 
      items.remove(at: indexPath.row) 
      tableView.deleteRows(at: [indexPath], with: .fade) 
     } else if editingStyle == .insert { 
      // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
     } 
    } 
} 

回答

1

目前heightForRowAt未被因爲heightForRowAt方法稱爲是UITableViewDelegate方法,以便

你的擴展應該是這樣的:

添加UITableViewDelegate

extension SavingViewController: UITableViewDataSource, UITableViewDelegate { 
}