【问题标题】:How would I display a UIDatePicker when a UITableView cell is tapped?点击 UITableView 单元格时如何显示 UIDatePicker?
【发布时间】:2018-08-18 21:03:00
【问题描述】:

这就是我想要做的。我有一个有 5 行的 UITableView。在最后两行中,我希望 UILabel 显示日期(如“开始”日期和“结束”日期)。当用户点击单元格时,我希望UIDatePicker 在工具栏中弹出一个“完成”按钮。当用户选择一个日期并单击“完成”时,UIDatePicker 应该关闭并且应该在单元格中为UILabel 显示新日期。我在网上和这里看到了几个例子,说将InputViewInputAccessoryView 分配给包含完成按钮的日期选择器和工具栏。但是,UILabelUIResponder,并且这些属性是只读的。我是否需要创建自己的自定义 UITableViewCell 才能完成这项工作?

这看起来应该很简单,在我的 Android 应用中做这样的事情也很简单。我正在使用 Xamarin,但我通常也可以找出用于本机 iOS 开发的其他语言的示例。任何帮助表示赞赏!

【问题讨论】:

  • “但是,UILabel 是一个 UIResponder 并且那些属性是只读的” 这些属性是只读的,但是通过子类化你可以说出它们的值是什么,所以这并不重要。
  • 感谢您的回复!我将 Cell 子类化并覆盖 InputView 并像这样分配 UIDatePicker:public override UIView InputView => _datePicker 但是当我点击单元格时没有任何反应。我是否需要将 UILabel 子类化?
  • 大概没有什么可以检测水龙头。您需要检测到点击并成为第一响应者。
  • 您是否有示例说明我将如何执行此操作,或者我可以在 TableSource 中的“RowSelected”或其他内容中调用什么方法?
  • 我有一个日期选择器作为输入视图的例子,但你所做的不是我会做的。我会将日期选择器作为手风琴单元格放在表格视图中,就像在 Apple 的日历应用程序中设置事件开始日期时一样。

标签: ios swift uitableview xamarin.ios uidatepicker


【解决方案1】:

是的,您需要创建一个带有文本字段的自定义单元格。

  • 将文本字段的输入视图设置为日期选择器,并将带有完成按钮的工具栏设置为文本字段的输入附件视图。

  • 单击文本字段时,它将显示日期选择器。

  • 单击完成按钮后,将文本字段文本设置为选定日期。第一次没有选择日期时设置占位符文本。

你有什么理由只想使用标签吗?

【讨论】:

  • 如何子类化 UITableViewCell 以使用 TextView 代替标签?我确实让它与标签一起使用,但覆盖了 InputView、InputAccessoryView、CanBecomeFirstResponder 和 CanResignFirstResponder 属性。它实际上与您的建议相同。
  • 我添加了一个示例项目,它显示了带有默认单元格的表格视图和带有日期选择器的自定义单元格。 - github.com/Abhie87/SampleTableView-Datepicker
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多