2017-07-28 25 views
1

當我說不能在後臺運行,我的意思是,當用戶雙擊了他們的家按鈕,刷卡時,該按鈕將重新啓用如何禁用一個按鈕,即使它在swift中不在後臺運行?

這是我viewDidLoad

if let waitingDate:Date = UserDefaults.standard.value(forKey: "waitingDate") as? Date 
    { 
     let currentDate = Date() 

     if(currentDate.compare(waitingDate) == ComparisonResult.orderedDescending) 
     { 
      getPointsOutlet.isEnabled = true 
     } 
    } 

代碼這是代碼在@IBAction func

getPointsOutlet.isEnabled = false 

let newDate = Calendar.current.date(byAdding: .day, value: 1, to: Date()) 

UserDefaults.standard.setValue(newDate, forKey: "waitingDate") 
+0

嘗試DATEVALUE作爲!日期 – Phyber

+0

並啓用按鈕檢查:https://stackoverflow.com/questions/28571194/using-nsuserdefaults-to-add-a-24hour-countdown-timer-in-swift – Phyber

+0

試試這個:爲設置UserDefaults.standard .set(Date(),forKey:「yourKey」)....用於獲取UserDefaults.standard.object(forKey:「yourKey」)as!日期 – KKRocks

回答

3

來獲取值經常檢查使用保護或者讓語句來防止死機: -

//Set value in user default 
UserDefaults.standard.set(Date(), forKey:"date") 
UserDefaults.standard.synchronize() 

//Get value from user default 
guard let value = UserDefaults.standard.object(forKey: "date") as? Date else {return} 
print(value) 
+0

等待爲什麼第二個不能是as!日期' –

+0

如果您的日期值爲零,則會崩潰。 –

+0

@NikolayKhramchenko,是的,這也是好點! –

3

節省:

UserDefaults.standard.set(Date(), forKey:"date") 
UserDefaults.standard.synchronize() 

檢索:

if let dateValue = clickdate.object(forKey: "date") as? Date{ 
    ... 
} 

爲使按鈕後24小時檢查這篇文章:如果你想禁用按鈕24小時,然後保存明天的日期 Enabling button after 24 hours

let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: Date()) 
UserDefaults.standard.set(tomorrow, forKey:"date") 

檢查按鈕是否應該啓用:

let currentDate = Date() 

if(currentDate.compare(dateValue) == ComparisonResult.orderedDescending){ 
    //reenable button 
} 
+0

謝謝,我檢查了另一篇文章,我將如何更改這個'let newDate = calendar.dateByAddingUnit(NSCalendarUnit.CalendarUnitDay,value:1,toDate:currentDate,options:NSCalendarOptions.allZeros)'爲更新版本的swift? –

+0

Calendar.current.date(byAdding:.day,value:1,to:Date()) – Phyber

相關問題