2017-07-28 5 views
1

私は、ユーザーがダブル自分のホームボタンをクリックし、最大スワイプすると、ボタンがボタンをバックグラウンドで迅速に実行していない場合でもボタンを無効にするにはどうすればよいですか?

を再度有効にします。これは、私の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

これを試してください:Set UserDefaults.standard .set(Date()、forKey: "yourKey"))....を取得するために、UserDefaults.standard.object(forKey: "yourKey")を!日付 – 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

なぜ、2番目のものは 'としては使えないのですか? Date' –

+0

Dateの値がnilの場合、クラッシュします。 –

+0

@NikolayKhramchenko、はい、それも良い点です! –

3

のコード割引:

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

取得:

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

を24時間後にボタンを有効にするために、この記事をチェックしてください。 Enabling button after 24 hours

あなたは24時間のボタンを無効にしたい場合は、明日の日付を保存:

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

ありがとうございました。私は他の投稿をチェックしましたが、どうすれば更新されたswiftのためにこの 'let newDate = calendar.dateByAddingUnit(NSCalendarUnit.CalendarUnitDay、value:1、toDate:currentDate、options:NSCalendarOptions.allZeros)を変更できますか? –

+0

Calendar.current.date(by:追加:.day、値:1、to:Date()) – Phyber

関連する問題