我有一个带有STATIC单元的uitableview控制器,分为两部分。我调整了细胞的高度0&第0节中的1使用故事板。但是,在切换UI切换并在第1部分中点击单元格后,我使用代码扩展了日期选择器。
我的问题是代码覆盖了第0节中的单元格0和1.如何强制这些单元格从故事板中获取高度?如果那是不可能的,我将如何编码它们的高度,以便单元格扩展代码不会覆盖它?
注意:我是新手,并且不完全理解我用来进行扩展的代码,所以如果我需要更改它,请告诉我。代码贴在下面。
var pickerVisible = false
// MARK: - COLLAPSABLE CELL
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 1 && indexPath.row == 2 {
pickerVisible = !pickerVisible
tableView.reloadData()
}
tableView.deselectRow(at: indexPath, animated: true)
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 1 && indexPath.row == 2 && toggle.isOn == false {
return 0.0
}
if indexPath.section == 1 && indexPath.row == 3 {
if toggle.isOn == false || pickerVisible == false {
return 0.0
}
return 165.0
}
return 44.0
}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 44.0
}
答案 0 :(得分:0)
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 0 {
// set height for rows in section 0
} else if indexPath.section == 1 {
// set height for rows in section 1
} else {
// default height for your tableview cell
return 44.0
}
}
- >我想你真的不需要这个。
- >它很容易做你想要的(上面的示例代码)
答案 1 :(得分:0)
我找到了另一个答案,它真正解决了我的问题所在 - 如何将一个单元格编程为一个精确的高度,并让所有其他单元格从故事板中放置的高度中获取高度。
答案是,而不是在heightForRowAt中返回一个数字,您可以执行以下操作:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
return 170.0
}
// OTHERWISE, RETURN WHATEVER THE TABLEVIEW WANTS.
return self.tableView.rowHeight