我有一個應用程序,爲您提供獲取每日提醒完成任務的選項。爲了在TestFlight上測試我的測試用戶,我設置了一個虛擬UIViewController
,並在其中放置了一個開關來打開和關閉提醒以及UIDatePicker
(僅限時間模式)以設置時間。當您第一次加載視圖時,它會讀取現有的UILocalNotification
,並在UIDatePicker
上顯示當前的設置時間。您可以啓用/禁用並更改通知時間。奇蹟般有效。UIDatePicker沒有迴應setDate
但是現在我已經完成了對我的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)
}
}