在Uib文件中将UITableViewCell加载到UITableView

时间:2018-05-25 21:02:06

标签: ios swift uitableview

好的,我看过很多论坛,但我没有发现任何具体的问题。

  • 我有一个ViewController,我添加了一个UITableView。

enter image description here

  • UITableView加载创建为xib文件的UITableViewCell

enter image description here

  • TableViewCell有一个UITableView,而UITableView又创建了一个UITableViewCell作为xib文件。

enter image description here

enter image description here

  • 这是如何在Firts UITableView中加载第一个UITableViewCell。 ViewController中的负载:

    tableDetails.delegate = self tableDetails.dataSource = self tableDetails.register(UITableViewCell.self, forCellReuseIdentifier: "DepartureDetailTableViewCell")

  

问题是我不知道如何从ViewController在xib文件中的第二个UITableView中加载第二个UITableViewCell。有什么帮助吗?而且,如何为第二个UITableView / UITableViewCell做这个。

enter image description here

PD。:参见本教程,但他在ViewController中使用原型单元格:https://www.youtube.com/watch?v=znGd5kyIdgM

请帮助!

更新

好的,我用@Abdelahad Darwish解决方案来解决问题!但我有另一个问题...当在DepartureDetailTableViewCell中加载DepartureInsideTableViewCell时......没有显示任何内容......它显示如下:

enter image description here

必须在两个视图的中间显示DepartureInsideTableViewCell" 2018年5月30日 - 01:04"和" 5月30日,07:47"

任何帮助?

1 个答案:

答案 0 :(得分:1)

首先为您的MainTableView从Xib注册正常单元格 只是做正常,DepartureDetailTableViewCell将拥有所有Datasource和委托内部单元格像这样:

不要忘记编写正确的单元格标识符等等

在ViewController中:

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {


    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.register(UINib.init(nibName: "DepartureDetailTableViewCell", bundle: nil), forCellReuseIdentifier: "DepartureDetailsTableViewCell")
        self.tableView.delegate = self
        self.tableView.dataSource = self

    }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DepartureDetailTableViewCell", for: indexPath) as! DepartureDetailTableViewCell
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4 // cell data source
    }
}

在DepartureDetailTableViewCell中:

class DepartureDetailTableViewCell: UITableViewCell {

    @IBOutlet weak var tableView:UITableView!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

        self.tableView.register(UINib.init(nibName: "DepartureInsideTableViewCell", bundle: nil), forCellReuseIdentifier: "DepartureInsideTableViewCell")
        self.tableView.delegate = self
        self.tableView.dataSource = self
    }


}

extension DepartureDetailTableViewCell: UITableViewDelegate,UITableViewDataSource{

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DepartureInsideTableViewCell", for: indexPath) as!  DepartureInsideTableViewCell
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4 // cell data source
    }
}