当我选择该单元格时,我试图将子视图(包含UIDatePicker)添加到UITableView单元格的视图中。但是,当我选择该单元格时,子视图的内容不会显示。
下面是我检查用户是否选择要将子视图添加到的单元格的位置:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == SectionOne && indexPath.row == RowOne && self.datePickerIsShowing == NO){
[self.RowOne addSubview:_datePicker];
[self showDatePickerCell];
} else{
[self hideDatePickerCell];
}
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
此外,下面是我创建日期选择器并显示它的方式:
- (void)createDatePicker{
_datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
_datePicker.datePickerMode = UIDatePickerModeTime;
_datePicker.clipsToBounds = YES;
_datePicker.backgroundColor = [UIColor colorWithRed:0.922 green:0.937 blue:0.949 alpha:1];
}
- (void)showDatePickerCell {
self.datePickerIsShowing = YES;
self.datePicker.hidden = NO;
[self.tableView reloadData];
NSLog(@"Show date picker");
}
以下是我如何将所选行设置为显示日期选择器所需的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CGFloat rowHeight = self.tableView.rowHeight;
if (indexPath.section == SectionOne && indexPath.row == RowOne && self.datePickerIsShowing == YES){
rowHeight = kDatePickerCellHeight;
}
else{
rowHeight = self.tableView.rowHeight;
}
return rowHeight;
}
答案 0 :(得分:2)
我猜你错过了UIDatePicker的框架。您需要使用frame初始化。或者您是否已在代码中的其他位置设置框架。
- (void)createDatePicker{
_datePicker = [[UIDatePicker alloc]initWithFrame:CGRect(0,0,100,20)];
_datePicker.datePickerMode = UIDatePickerModeTime;
_datePicker.clipsToBounds = YES;
_datePicker.backgroundColor = [UIColor colorWithRed:0.922 green:0.937 blue:0.949 alpha:1];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell =[UITableViewCell cellForItemAtIndexPath:indexPath];
if (indexPath.section == SectionOne && indexPath.row == RowOne && self.datePickerIsShowing == NO){
[cell addSubview:_datePicker];
[self showDatePickerCell];
} else{
[self hideDatePickerCell];
}
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
答案 1 :(得分:0)
向UITableViewCell添加视图无法正常工作。将它们添加到UITableViewCell的contentView中。
也就是说,在didSelectRowAtIndexPath中添加视图并不是一件好事。如果我选择两次行会怎样?如果我滚动以使行不再可见会发生什么情况(单元格将被重复使用,仍然附加了日期选择器。您需要至少正确处理prepareForReuse。