gpt4 book ai didi

objective-c - iOS 在 UITableViewCells 之间显示 UIDatePicker

转载 作者:太空狗 更新时间:2023-10-30 03:20:25 25 4
gpt4 key购买 nike

在 iOS 7 中,鼓励开发人员在需要输入时在表格单元格之间显示日期选择器,然后在完成后隐藏它们。我怎样才能达到这个效果?

enter image description here

最佳答案

Vasilica Costescu 在这里有一个很棒的教程: http://masteringios.com/blog/2013/10/31/ios-7-in-line-uidatepicker/

对于静态表: http://masteringios.com/blog/2013/11/18/ios-7-in-line-uidatepicker-part-2/

示例代码在这里:https://github.com/costescv/InlineDatePicker

关键位是隐藏/显示方法:

 - (void)showDatePickerCell {
self.datePickerIsShowing = YES;
[self.tableView beginUpdates];
[self.tableView endUpdates];

self.datePicker.hidden = NO;
self.datePicker.alpha = 0.0f;

[UIView animateWithDuration:0.25 animations:^{
self.datePicker.alpha = 1.0f;
}];
}

- (void)hideDatePickerCell {
self.datePickerIsShowing = NO;
[self.tableView beginUpdates];
[self.tableView endUpdates];

[UIView animateWithDuration:0.25
animations:^{
self.datePicker.alpha = 0.0f;
}
completion:^(BOOL finished){
self.datePicker.hidden = YES;
}];
}

这个 UITableViewDelegate 方法将通过将其高度设置为 0 来“隐藏”该行:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.section == 0 && indexPath.row == 4 && self.datePickerIsShowing == NO){
// hide date picker row
return 0.0f;
}
return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}

您可以通过按钮或仅通过选择表格中的行来调用隐藏/显示方法。 (注意:如果其他行有文本字段,那么您可能需要在 textFieldDidBeginEditing 委托(delegate)方法中隐藏 datePicker)。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 0 && indexPath.row == 4) {
if (self.datePickerIsShowing){
[self hideDatePickerCell];
}else {
[self showDatePickerCell];
}
}
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

编辑:在单个表中使用多个这些内联选择器 View 时要小心。我注意到它们从 Storyboard 中加载的速度往往很慢:iOS 7 slow to open UITableViewController with UIPickerView

关于objective-c - iOS 在 UITableViewCells 之间显示 UIDatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19073316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com