在UITableViewCell上显示和隐藏DatePicker

时间:2015-03-02 17:00:04

标签: ios objective-c uitableview datepicker uidatepicker

我有一个表格视图控制器,我需要在点击一个单元格时显示日期和时间选择器,并在再次点击单元格时隐藏它。基本上与您选择开始和结束日期和时间以在日历中创建新事件时iphone具有的效果相同。

我猜测显示和隐藏是按照以下方法进行的,但我不确定内容是什么:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}

一些示例代码或链接会很棒。谢谢!!

2 个答案:

答案 0 :(得分:1)

使用您想要显示的内容和选择器创建您的单元格:

-----------------------------------
 cell visible part
-----------------------------------
 cell invisible part (with picker)
-----------------------------------

定义一个属性,让您知道是否必须显示整个单元格:

@property (nonatomic) BOOL shouldShowPicker;

初始化此属性(例如,在viewDidLoad上);

self.shouldShowPicker = NO;

要触摸的几种方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.row == 4) { //where your picker row is
        self.shouldShowPicker = YES;
            [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == 4 && self.shouldShowPicker) { //where your picker row is
         return CELL_VISIBLE_PLUS_INVISIBLE_PART;
    } else if(indexPath.row == 4 && !self.shouldShowPicker) {
         return return CELL_VISIBLE_PART;
    } else {
         return OTHER_CELLS_HEIGHT;
    }
}

答案 1 :(得分:0)

您可能会发现我的答案很有用,它描述了您需要做的事情。

Inline UIPicker Implementation

基本上,您可以使用可选按钮创建包含日期选择器的自定义单元格。然后,在编辑时将此单元格添加到单元格下方,并在完成后将其删除。所有这些都在链接中解释。