我正在使用UITableView
自定义单元格。每个单元格都有自己的nib文件和控制器。在一个单元格中,我想让用户选择日期。单元格上显示默认日期。当用户点击单元格时,UIPickerView
应在单元格上展开。我在论坛上发现了多个类似的问题,但所有问题都使用了包含UIPickerView
的额外单元格。在我的应用程序中,我需要使用一个包含标签和Pickerview的nib文件。也许当单击单元格时,我应该显示pickerView并更新单元格高度,当再次单击单元格时,我应该隐藏它并再次更新高度。我在某个地方看到了一个例子,但它是用Objective-C编写的。您是否认为以这种方式实现它并且是否有Swift示例?
答案 0 :(得分:3)
那么,要解决这个问题,您只需在单元格视图中设置标签和选取器之间的固定垂直间距。看这个截图
然后,每当用户点击单元格时,您只需重新加载具有更新的单元格高度的表格视图。这是源代码:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
fileprivate var cellExpanded = false
// MARK: - UITableView datasource & delegate
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PickerCell")!
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return (cellExpanded) ? 260:44
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
cellExpanded = !cellExpanded
tableView.reloadData()
}
}