我确定之前会问这个问题,但我找不到解决方法。
我有UITableViewController
个静态cells
,我有4个sections
(到目前为止),每个section
只有1个cell
。
这是第一部分Cell的一部分
这是相应的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
提前感谢您,并抱歉这么长的问题
答案 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
的复杂性