2017-08-02 27 views
0

我正在測試如何在UITableView的不同部分使用不同的單元格類型。我爲此創建了一個項目。故事板看起來是這樣的: enter image description here在iOS表格視圖的不同部分使用不同的單元格類型

正如你所看到的,我插入了兩個原型單元格,其外觀略有不同。這裏是我的視圖控制器:

import UIKit 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 
    @IBOutlet var tableView: UITableView! 
    var firstSection = "first title" 
    var secondSection = ["second title", "third title"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tableView.dataSource = self 
     self.tableView.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     if section == 0 { 
      return 1 
     } 
     return secondSection.count 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 2 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     if indexPath.section == 0 { 
      let cell = self.tableView.dequeueReusableCell(withIdentifier: "first_cell", for: indexPath) as! FirstCell 
      cell.title.text = self.firstSection 
      return cell 
     } 
     else { 
      let cell = self.tableView.dequeueReusableCell(withIdentifier: "second_cell", for: indexPath) as! OtherCell 
      cell.title.text = self.secondSection[indexPath.row] 
      return cell 
     } 
    } 

    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     if section == 0 { 
      return "Section 1" 
     } 
     else { 
      return "Section 2" 
     } 
    } 
} 

和我的兩個類型的表視圖細胞的定義:

class FirstCell: UITableViewCell { 
    @IBOutlet var title: UILabel! 
} 

class OtherCell: UITableViewCell { 
    @IBOutlet var title: UILabel! 
} 

我已經確定在故事板指定原型細胞的類名和設置其重用標識符。但是,已編譯的應用程序顯示此意外行爲: enter image description here

首先,沒有顯示單元格。其次,在第二節標題下面,有這個灰色區域,其中有一些x插圖,其起源我不知道。我可以如何解決這個問題?提前致謝。

+0

您可能要實現'FUNC的tableView(_的tableView:UITableView的,heightForRowAt indexPath:IndexPath) - > CGFloat' – Larme

+0

@Larme它的工作!非常感謝你。 – antande

回答

0

您可能需要設置單元格的高度。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 
    } 
+0

它工作!謝謝。 – antande

+0

很高興幫助! @antande,請upvote! :) – Kiester

相關問題