UIDatePicker没有响应setDate

时间:2016-04-26 03:51:31

标签: ios swift uidatepicker

我有一个应用程序,可让您选择每日提醒以完成任务。要在TestFlight上与我的测试用户一起测试,我设置了一个虚拟UIViewController并在其中放置一个开关以打开和关闭提醒以及UIDatePicker(仅限时间模式)以设置时间。首次加载视图时,它会读取现有的UILocalNotification并在UIDatePicker上显示当前的设置时间。您可以启用/禁用和更改通知时间。像魅力一样。

但是现在我已经完成了对TestFlight用户的测试,我正在将功能转移到新的屏幕上。所以我从头开始重建整个事情,除了我将旧测试View Controller中的代码复制并粘贴到新测试中。所以他们完全相同 - 差不多。

唯一的区别是新的内容本身已放置在UITableViewCell而不是UIViewController内 - 这样就可以很好地与应用的其他设置匹配。

在新位置,它根据用户是否启用了提醒来正确设置开关状态,并且我可以使用它来启用/禁用它们。我也可以将提醒时间更改为新时间。奇迹般有效。但是,当我加载新位置时,UIDatePicker会显示当前时间,而不是UILocalNotification中预定的时间。我完全无法解释它。正如我所说,代码已经从旧位置复制并粘贴到新位置。旧的仍然有效。新的没有。以下是相关代码。

我只能假设它与UITableViewCell内部有关,因为这是唯一的区别,但我无法理解为什么在这个世界中这很重要。

编辑:我一直在寻找解决方案,但没找到任何解决办法。似乎使用setDate只是没有效果。我打印了所有变量,看看它们返回的内容是否正确。这几乎就是阻止UIDatePicker响应setDate的东西。我无法在任何地方找到任何解决此问题的文章。我真的希望有人在那里遇到过这个。

感谢您的帮助!!

    if let notificationArray = UIApplication.sharedApplication().scheduledLocalNotifications {

        if notificationArray.count != 0 {

            let oneNotification = notificationArray[0]

            oneNotification.timeZone = NSTimeZone.defaultTimeZone()

            let savedDate = oneNotification.fireDate

            let calendar = NSCalendar.currentCalendar()
            let components = NSDateComponents()
            components.hour = calendar.component(.Hour, fromDate: savedDate!)
            components.minute = calendar.component(.Minute, fromDate: savedDate!)

            timePicker.setDate(calendar.dateFromComponents(components)!, animated: false)


        }

    }

1 个答案:

答案 0 :(得分:1)

所以我似乎已经解决了这个问题,但不是我想象的那样。我正在使用界面设计器在XIB中的UIDatePicker中创建UITableViewCell。奇思妙想和奇迹,我使用删除它并以编程方式创建它。它完美无缺!!

我对它所做的唯一改变就是我上面所说的 - 所有其他代码保持不变,我只是将编程创建的UIDatePicker连接到留下的相同方法和操作被删除的那个。

为了记录,我还在界面设计器中重新创建了UIDatePicker内的另一个UIViewController,并再次复制并粘贴了代码。它工作得很好。这似乎确实与放置在UITableViewCell内部有点关系......很奇怪。

我想知道这可能是一个错误吗?在任何情况下,如果您遇到同样的问题,请尝试。