我的iPhone应用程序中有一个开始日期/结束日期功能。它类似于iPhone的原生日历应用程序,除了没有“全天”选项。也就是说,用户所能做的就是输入开始时间/日期和结束时间/日期。
界面是一个带有两个单元格的简单分组UITableView。用户选择“开始”单元格或“结束”单元格(将其变为蓝色),然后使用UIDatePicker更改每个单元格的值。
我已经按预期工作了,除了用户可以在表外单击,这样就不会选择任何表格单元格。问题是,用户仍在编辑先前选择的单元格。
理想情况下,我可以限制用户始终选择一个表格单元格。除此之外,我决定能够检测到没有选择任何单元格,因此我可以在编辑任何内容之前截取UIDatePicker。
答案 0 :(得分:1)
您可以实施willDeselectRowAtIndexPath
中的UITableViewDelegate
。返回nil
并且不会取消选择该行:
- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
return nil;
}
或者,你可以实现didDeselectRowAtIndexPath
,你会知道它未被选中。但是你必须将它存储在一个成员变量或某个地方:
- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath
答案 1 :(得分:0)
从您的问题看,您在同一视图中看到了一个带有UIPicker的tableView。您可能希望将选择器放在单独的视图中,当用户选择其中一个单元格时,您可以将其推到屏幕上。使用这种技术,用户肯定必须选择其中一个单元格来编辑选择器中的信息。