静态单元格中 UITableViewCell 中 UIDatePicker 的高度中断
Height broken for UIDatePicker in UITableViewCell in static cell
我试图通过单击上方的单元格将 UIDatePicker 放入 UITableViewCell,即 opened/closed。选择器似乎呈现错误。首先,这是来自 UITableView class:
的相关代码
// Determines if the date picker should be shown
var editingDate: Bool = false
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.section == 1 && indexPath.row == 1 { // Picker cell
if !self.editingDate {
return 0
}
}
return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.section == 1 && indexPath.row == 0 { // Date cell
self.editingDate = !self.editingDate
tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: 1, inSection: 1)], withRowAnimation: .Fade)
}
}
情节提要中的table:
我已将情节提要中的 Table 单元格设置为自定义高度 219。下面是我当前单击日期字段时发生的情况的动画 GIF。抱歉质量太差了。
我注意到我们可以从上面的动画 gif 中看到单元格背景变得透明(不是白色),这意味着单元格的内容视图没有拉伸到全高。我想知道为什么会这样?
编辑: 以下是用于 DatePicker 的约束:
你在使用自动布局吗?
如果是这样,请尝试通过按住 CTRL 键的同时将 DatePicker 从单元格拖动到单元格,从而将 DatePicker 固定在 IB 中的单元格边缘。固定完所有 4 个边后,再试一次。
如果您使用静态单元格,您可以在故事板编辑器中指定包含选取器的单元格的高度,您的代码可能如下所示:
if (indexPath.section == 1 && indexPath.row == 1 && !editingDate) { // Picker cell
return 0
}
return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
更新
替换:
tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: 1, inSection: 1)], withRowAnimation: .Fade)
与:
tableView.beginUpdates()
tableView.endUpdates()
我试图通过单击上方的单元格将 UIDatePicker 放入 UITableViewCell,即 opened/closed。选择器似乎呈现错误。首先,这是来自 UITableView class:
的相关代码// Determines if the date picker should be shown
var editingDate: Bool = false
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.section == 1 && indexPath.row == 1 { // Picker cell
if !self.editingDate {
return 0
}
}
return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.section == 1 && indexPath.row == 0 { // Date cell
self.editingDate = !self.editingDate
tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: 1, inSection: 1)], withRowAnimation: .Fade)
}
}
情节提要中的table:
我已将情节提要中的 Table 单元格设置为自定义高度 219。下面是我当前单击日期字段时发生的情况的动画 GIF。抱歉质量太差了。
我注意到我们可以从上面的动画 gif 中看到单元格背景变得透明(不是白色),这意味着单元格的内容视图没有拉伸到全高。我想知道为什么会这样?
编辑: 以下是用于 DatePicker 的约束:
你在使用自动布局吗?
如果是这样,请尝试通过按住 CTRL 键的同时将 DatePicker 从单元格拖动到单元格,从而将 DatePicker 固定在 IB 中的单元格边缘。固定完所有 4 个边后,再试一次。
如果您使用静态单元格,您可以在故事板编辑器中指定包含选取器的单元格的高度,您的代码可能如下所示:
if (indexPath.section == 1 && indexPath.row == 1 && !editingDate) { // Picker cell
return 0
}
return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
更新
替换:
tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: 1, inSection: 1)], withRowAnimation: .Fade)
与:
tableView.beginUpdates()
tableView.endUpdates()