似乎是一个非常简单的问题,但我还没有找到解决方案:
我有一个UIDatePicker
,显示何时选择了某个表视图单元格。我用以下代码显示它:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 1) {
switch (indexPath.row) {
case 0: {
_alarmPicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 315, 320, 0)];
[_alarmPicker setDatePickerMode:UIDatePickerModeTime];
[_alarmPicker addTarget:self action:@selector(alarmPickerChanged) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_alarmPicker];
}
break;
default:
break;
}
}
}
问题是,无论何时显示选择器,它都会与表的其余部分一起向上和向下滚动。除了在选择选择器时禁用表格视图上的所有滚动之外,如何保持选择器固定但表格可滚动?
答案 0 :(得分:1)
您可以将其添加到关键窗口:
[[[UIApplication sharedApplication] keyWindow] addSubview:_alarmPicker];
因此它将在顶部。您正在将其添加到表视图中(假设您使用的是UITableViewController
)。
答案 1 :(得分:1)
经过一些试验后,我发现这对我来说非常容易:[self.window addSubview:picker];
为了删除选择器,我使用了:[picker removeFromSuperview];
答案 2 :(得分:0)
如果您使用的是iOS 6,则可以在UIDatePicker和self.view.superview
之间设置约束。这将阻止日期选择器移动:它将被“固定”到超级视图。