Ios 在覆盖中找不到显示视图控制器-UIDatePicker

Ios 在覆盖中找不到显示视图控制器-UIDatePicker,ios,swift,uiviewcontroller,datepicker,Ios,Swift,Uiviewcontroller,Datepicker,我使用以下代码显示覆盖视图(通过将其作为子视图添加到窗口): 覆盖视图包含一个UIDatePicker。这段代码过去工作得很好。但是,现在我看到了以下错误: [Assert] Failed to find a presenting view controller for view (<_UIDatePickerIOSCompactView: 0x7fe8003288e0; frame = (0 0; 114 188.333); gestureRecognizers = <NSArra

我使用以下代码显示覆盖视图(通过将其作为子视图添加到
窗口
):

覆盖视图包含一个
UIDatePicker
。这段代码过去工作得很好。但是,现在我看到了以下错误:

[Assert] Failed to find a presenting view controller for view (<_UIDatePickerIOSCompactView: 0x7fe8003288e0; frame = (0 0; 114 188.333); gestureRecognizers = <NSArray: 0x600003bca3d0>; layer = <CALayer: 0x600003025a80>>) in window (<UIWindow: 0x7fe7fc436010; frame = (0 0; 390 844); autoresize = W+H; gestureRecognizers = <NSArray: 0x6000038918f0>; layer = <UIWindowLayer: 0x60000367d5c0>>). The interaction's view (or an ancestor) must have an associated view controller for presentation to work.
[Assert]在窗口()中找不到视图()的显示视图控制器。交互的视图(或祖先视图)必须有一个关联的视图控制器,才能使演示正常工作。
UIDatePicker
看起来已损坏:


您似乎想要构建一个DatePicker控件,可以在应用程序中的任何地方使用。你能做的是

  • 从UIWindow创建Z索引更高的派生类,请选中
  • 从UIViewController创建一个派生类,并将datePicker控件添加到任何您喜欢的UI自定义项上

  • 接下来,将在第2点中创建的视图控制器设置为在第1点中创建的窗口的rootViewController

  • 现在,每次您想显示日期选择器时,都将您的窗口设置为keyWindow。由于UIWindow是从UIView类继承来的,所以可以按照您想要的方式对其进行动画制作,并且您的出色的动画日期选择器是从头构建的


  • 另外,你也可以把它作为CocoaPod发布

    IOS14引入了UIDatePicker实例属性datePickerStyle{get}和preferredDatePickerStyle{set get}。您的“断开的”UIDatePicker似乎是新样式之一。如果您希望看到“wheel”外观,请尝试将perferredDatePickerStyle属性设置为UIDatePickerStyle.wheels。这可能是错误的原因,因为日期选择器压缩视图将与UTDatePickerStyle.compact样式相关联

    [Assert] Failed to find a presenting view controller for view (<_UIDatePickerIOSCompactView: 0x7fe8003288e0; frame = (0 0; 114 188.333); gestureRecognizers = <NSArray: 0x600003bca3d0>; layer = <CALayer: 0x600003025a80>>) in window (<UIWindow: 0x7fe7fc436010; frame = (0 0; 390 844); autoresize = W+H; gestureRecognizers = <NSArray: 0x6000038918f0>; layer = <UIWindowLayer: 0x60000367d5c0>>). The interaction's view (or an ancestor) must have an associated view controller for presentation to work.