gpt4 book ai didi

ios - 尝试将内联 UIDatePicker 添加到 UITableViewCell

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:41:25 24 4
gpt4 key购买 nike

我正在尝试在 TableView 单元格内创建一个内联 DatePicker,类似于 thisthis所以线程。

我使用下面的方法创建日期选择器,该方法在加载 View 时调用:

- (void)createDatePicker{
_datePicker = [[UIDatePicker alloc]init];
_datePicker.datePickerMode = UIDatePickerModeTime;
_datePicker.clipsToBounds = YES;
_datePicker.backgroundColor = [UIColor colorWithRed:0.922 green:0.937 blue:0.949 alpha:1];

NSLog(@"date picker created");
}

然后我检查是否选中了 TableView 中第三部分的底行。如果是,并且日期选择器尚未显示,那么我将调用该方法来显示日期选择器的单元格:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == HourTimeZoneRow && self.datePickerIsShowing == NO)
{
NSLog(@"Time of day section");
[self showDatePickerCell];
} else
{
[self hideDatePickerCell];
}
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

以下是显示日期选择器单元格的方法:

- (void)showDatePickerCell {
[self.tableView addSubview:_datePicker];
self.datePickerIsShowing = YES;
self.datePicker.hidden = NO;
[self.tableView reloadData];
NSLog(@"Show date picker");
}

...并隐藏单元格:

- (void)hideDatePickerCell {
self.datePickerIsShowing = NO;
self.datePicker.hidden = YES;
[self.tableView reloadData];
NSLog(@"Hide date picker");
}

下面是判断表格 View 是否需要额外添加一个cell来显示UIDatePicker的方法。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
switch (section) {
case TableSectionOne:
return TotalRowsSection1;
break;
case TableSectionTwo:
return TotalRedZoneRows;
break;
case TableSectionThree:
if (self.datePickerIsShowing == YES) {
return TableSectionThree + 1;
}
else {
return TableSectionThree;
}
break;
default:
return 0;
break;
}
}

最后,下面的方法应该用来确定日期选择器单元格的高度:

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

CGFloat rowHeight = self.tableView.rowHeight;

if (indexPath.row == HourTimeZoneRow){
rowHeight = 164;
}
else {
rowHeight = self.tableView.rowHeight;
}
return rowHeight;
}

However, what's happening is that when the last row of the third section is selected, the date picker is displayed in the first row of the first section.有人对我做错了什么有什么建议吗?

最佳答案

您将 datePicker 添加到 tableView,而不是 tableView 中的单元格。

从 showDatePickerCell 中删除这一行:

[self.tableView addSubview:_datePicker];

然后将其添加(或取消隐藏)到 cellForItemAtIndexPath 内的适当单元格中。

(类似于:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

if (indexPath.row == HourTimeZoneRow) {
// show the datePicker here
}

cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
return cell;
}

)

关于ios - 尝试将内联 UIDatePicker 添加到 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353639/

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