0
votes

Comment ajouter UitailView dans la cellule de TableView en utilisant Swift

Dans MyScenario, j'essaie d'ajouter dynamic uableview dans la cellule Static UitailView. Comment y parvenir? J'ai essayé ci-dessous le code mais ça ne fonctionne pas pour moi.

Le nombre de cellules de la table dynamique de la TableView a besoin de réajuster une hauteur de la cellule de la tableView statique. Veuillez fournir un exemple de code. P>

Code TableView strong> P>

import UIKit

  class CustomCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {

  var dataArr:[String] = []
  var subMenuTable:UITableView?
  override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
      super.init(style: style , reuseIdentifier: reuseIdentifier)
      setUpTable()
  }

  required init(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
      setUpTable()
  }

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

  func setUpTable(){
      subMenuTable = UITableView(frame: CGRectZero, style:UITableViewStyle.Plain)
      subMenuTable?.delegate = self
      subMenuTable?.dataSource = self
      self.addSubview(subMenuTable!)
  }

  override func layoutSubviews() {
      super.layoutSubviews()
      subMenuTable?.frame = CGRectMake(0.2, 0.3, self.bounds.size.width-5, self.bounds.size.height-5)
  }

  override func setSelected(selected: Bool, animated: Bool) {
      super.setSelected(selected, animated: animated)
      // Configure the view for the selected state
  }

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

  func numberOfSectionsInTableView(tableView: UITableView) -> Int {
      return 1
  }

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cellID")

    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellID")
    }

    cell?.textLabel?.text = dataArr[indexPath.row]

    return cell!
  }
}


2 commentaires

Est-ce que cela répond à votre question? Créez la tableView Inside TableViewCell à l'aide de Swift


J'avais fait quelque chose de similaire une fois. Je devais calculer la hauteur de la TableView censée être dans une cellule de TableView, puis renvoyer cette hauteur dans la méthode de la hauteur de la vue principale


3 Réponses :


0
votes

Créer un projet d'affichage à une seule vue Ajout de la TableView à l'intérieur du storyboard et configurez son DataSource et sa déléguée

DO Code comme ci-dessous à FirstViewController.swift P>

import UIKit

  class CustomCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {

  var dataArr:[String] = []
  var subMenuTable:UITableView?
  override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
      super.init(style: style , reuseIdentifier: reuseIdentifier)
      setUpTable()
  }

  required init(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
      setUpTable()
  }

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

  func setUpTable(){
      subMenuTable = UITableView(frame: CGRectZero, style:UITableViewStyle.Plain)
      subMenuTable?.delegate = self
      subMenuTable?.dataSource = self
      self.addSubview(subMenuTable!)
  }

  override func layoutSubviews() {
      super.layoutSubviews()
      subMenuTable?.frame = CGRectMake(0.2, 0.3, self.bounds.size.width-5, self.bounds.size.height-5)
  }

  override func setSelected(selected: Bool, animated: Bool) {
      super.setSelected(selected, animated: animated)
      // Configure the view for the selected state
  }

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

  func numberOfSectionsInTableView(tableView: UITableView) -> Int {
      return 1
  }

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cellID")

    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellID")
    }

    cell?.textLabel?.text = dataArr[indexPath.row]

    return cell!
  }
}


1 commentaires

Ça ne marche pas. J'ai vu un exemple identique comme ça?



0
votes

Faites cela dans votre contrôleur principal:

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    if tableView = self.tableView {
      var cell:CustomCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as?  CustomCell
    cell.tableView.delegate = self
    cell.tableView.dataSource = self
      return cell! 
} else {
 var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cellID")//here you custom cell's tableView's cell
return cell
}

   }


0 commentaires

0
votes

Fondamentalement, vous devrez calculer la hauteur de votre enfant TableView comme illustré ci-dessous

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
{
    @IBOutlet weak var parentTableView : UITableView? = nil
    var sections = [[String:[[String:String]]]]()

    override func viewDidLoad()
    {
        super.viewDidLoad()
        setup()
    }

    func setup()
    {
        // Data
        let section1 = ["Items" : [["Title" : "Row 1"], ["Title" : "Row 2"]]]
        let section2 = ["Items" : [["Title" : "Row 1"], ["Title" : "Row 2"], ["Title" : "Row 3"]]]
        let section3 = ["Items" : [["Title" : "Row 1"], ["Title" : "Row 2"], ["Title" : "Row 3"], ["Title" : "Row 4"]]]
        sections.append(section1)
        sections.append(section2)
        sections.append(section3)

        // Register header
    }

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

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


    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
    {
        // Calculate the height of parent cell.

        var cellHeight : CGFloat = 0.0

        let aSection = sections[indexPath.row]

        if let items = aSection["Items"]
        {
            cellHeight = CGFloat(44 * items.count)
        }

        return cellHeight
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        if let cell  = tableView.dequeueReusableCell(withIdentifier: "ParentTableViewCell") as? ParentTableViewCell
        {
            if let aSection = sections[indexPath.row] as? [String:[[String:String]]], let items = aSection["Items"]
            {
                cell.configure(items: items)
            }

            return cell
        }

        return UITableViewCell()
    }
}


0 commentaires