更新 - 感谢Farhad回答我的初始帖子。在这篇文章的底部是我遇到的关于动态单元格高度自动标注的新问题
我试过搜索其他帖子但无济于事。
正如标题所示,我希望我的表视图显示两个单元格,第二个单元格是自定义的。
第一个单元格将有4行--O.D,Weight,I.D,Grade。
第二个单元格(自定义单元格)将有8个标签显示来自第一个单元格的输入结果。
我有两个单元格的重用标识符。第一个小区我称之为" capacityCell"我的第二个单元格叫做" cell2"
对于我的第二个单元格,我创建了一个名为" CapacitiesTableViewCell"的新tableViewCell文件。 8个标签中有4个作为出口。
SIDE注意:对于单元格的名称,我只是放了一个通用的" Section#,Row#"现在,但是当我发现问题时,会将代码行更改为cell.textlabel?.text = capacityID
...假设这是正确的方法。
到目前为止,这是我的代码:
class CapacitiesTableViewController: UITableViewController {
let capacityParameters = ["O.D", "Weight", "I.D", "Grade"]
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 2
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return capacityParameters.count
} else {
return 1
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("capacitiesCell", forIndexPath: indexPath)
//let capacityID = capacityParameters[indexPath.row]
cell.textLabel?.text = "Section \(indexPath.section) Row \(indexPath.row)"
return cell
let dimensionAndStrengthCell = tableView.dequeueReusableCellWithIdentifier("cell2", forIndexPath: indexPath)
// my code goes here
return dimensionAndStrengthCell
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "Casing Specification"
} else {
return "Dimension & Strength"
}
}
改变CELL2的细胞高度
所以在我的viewDidLoad中我有以下内容:
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 200.0
}
我试图让我的观点看起来像下面的截图,但是"强度和尺寸"节单元格高度卡在默认高度上。
我从Farhad的回复中添加的新代码是:override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// init return type of cell
var returnCell: UITableViewCell!
if indexPath.section == 0 { // you can also check for section with section.index
returnCell = tableView.dequeueReusableCellWithIdentifier("capacitiesCell", forIndexPath: indexPath)
//let capacityID = capacityParameters[indexPath.row]
returnCell.textLabel?.text = "Section \(indexPath.section) Row \(indexPath.row)"
return returnCell
} else {
returnCell = tableView.dequeueReusableCellWithIdentifier("cell2", forIndexPath: indexPath)
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 200.0
return returnCell
}
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return "Casing Specification"
} else {
return "Dimension & Strength"
}
}
答案 0 :(得分:3)
在cellForRowAtIndexPath
中,您需要检查您需要输入新的 row
或 section
{{1}的位置声明。
if/else