UITableViewController使用值

时间:2017-08-15 10:22:32

标签: uitableview swift3

我确定之前会问这个问题,但我找不到解决方法。 我有UITableViewController个静态cells,我有4个sections(到目前为止),每个section只有1个cell

这是第一部分Cell的一部分

enter image description here

这是相应的TableViewCell文件,

  

AllgemeineProduktdatenCell.swift

class AllgemeineProduktdatenCell: UITableViewCell{

    // MARK: - Outlets
    @IBOutlet weak var AngebotsnameTextF: UITextField!
    @IBOutlet weak var Referenznummer: UITextField!
    @IBOutlet weak var modelTextF: UITextField!
    @IBOutlet weak var bemerkungTextF: UITextView!
    @IBOutlet weak var extrasTextF: UITextView!
    @IBOutlet weak var ursprLadenPreisEuroTextF: UITextField!
    @IBOutlet weak var ursprLadenPreisCentTextF: UITextField!
    @IBOutlet weak var AngebotsPreisEuroTextF: UITextField!
    @IBOutlet weak var AngebotsPreisCentTextF: UITextField!

    // Bereich Möbel
    @IBOutlet weak var bereichMoebelLabel: UILabel!
    @IBOutlet weak var bereichMoebelPicker: UIPickerView!
    @IBAction func showHideBereichMoebelPicker(_ sender: Any) {
        if bereichMoebelPicker.isHidden{
            bereichMoebelPicker.isHidden = false
        } else{
            bereichMoebelPicker.isHidden = true
        }
    }

    // Hersteller
    @IBOutlet weak var chosenHerstellerLabel: UILabel!
    @IBOutlet weak var herstellerPickerView: UIPickerView!
    @IBAction func showHideHerstellerPicker(_ sender: UIButton) {
        if herstellerPickerView.isHidden{
            herstellerPickerView.isHidden = false
        } else{
            herstellerPickerView.isHidden = true
        }
    }

    // Anzeigen auch auf eigener Webseite
    @IBOutlet weak var anzeigenAuchAufEigenerWebseiteSwitch: UISwitch!
    @IBAction func anzeigenAufWebsiteSwitch(_ sender: Any) {
    }

    // Start des Angebot
    @IBOutlet weak var startDesAngebotChosenDateLabel: UILabel!
    @IBOutlet weak var startDesAngebotDatePicker: UIDatePicker!
    @IBAction func hideShowStartDesAngebotDP(_ sender: Any) {
        if startDesAngebotDatePicker.isHidden{
            startDesAngebotDatePicker.isHidden = false
        } else{
            startDesAngebotDatePicker.isHidden = true
        }
    }



    func setUpAllgemeineFields(product: ItemsClass){
        AngebotsnameTextF.text = "ABED"//product.title
        Referenznummer.text = product.artikel_nummer
        modelTextF.text = product.typ_kategorie
    }

}

想象一下,我的每个细胞都有类似的文件。

这是我的主要View文件:

  

AddEditVC.swift

class AddEditVC: UITableViewController {

    var product_obj: ItemsClass!

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

    // MARK: - Table view data source
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 4
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let cell = tableView.dequeueReusableCell(withIdentifier: "AllgemeineProduktdaten") as? AllgemeineProduktdatenCell{
            cell.setUpAllgemeineFields(product: product_obj)
            return cell
        } else{
            print("FFFFFFAAAAAILD")
            return AllgemeineProduktdatenCell()
        }
    }
}

当我运行此应用程序时,单元格是空白的,我甚至看不到我的View,但当我注释掉cellForRowAt函数时,我可以看到我的outlets,但字段是空。

如何用我的物体填充细胞的区域?我应该如何指定要填充的单元格(我还需要其他部分的其他单元格)

更新: 这是我TableViewController

的概述

enter image description here

提前感谢您,并抱歉这么长的问题

2 个答案:

答案 0 :(得分:0)

设置所有原型单元类并重用标识符后,可以使用下面的代码生成单元格。由于您没有包含类的确切代码,因此这只是一个框架代码,但您应该能够填补空白。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    switch indexPath.section {
    case 0:
        let cell = tableView.dequeueReusableCell(withIdentifier: "AllgemeineProduktdaten") as! AllgemeineProduktdatenCell
        cell.setUpAllgemeineFields(product: product_obj)
        return cell
    case 1:
        let cell = tableView.dequeueReusableCell(withIdentifier: "OtherCellReuseIdentifier") as! OtherCellClass
        //set up cell content
        return cell
    default:
        return UITableViewCell()
    }
}

答案 1 :(得分:0)

我设法通过在question的帮助下询问另一个André,我使用了垂直UIStackView并在第一行添加了一个按钮(以及其他任何元素)行),然后将IBAction添加到UIButton的代码中,如下所示:

@IBAction func Section1Tapped(_ sender: Any) {
    guard let stackView = (sender as AnyObject).superview as? UIStackView else { return }
    guard stackView.arrangedSubviews.count > 1 else { return }
    let sectionIsCollapsed = stackView.arrangedSubviews[1].isHidden

    UIView.animate(withDuration: 0.25) {
        for i in 1..<stackView.arrangedSubviews.count {
            stackView.arrangedSubviews[i].isHidden = !sectionIsCollapsed
        }
    }
}

这会使StackView崩溃,无需经历TableView的复杂性