Как сделать так, чтобы кнопка появлялась только в течение ограниченного времени? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть кнопка UIB: @IBAction func button1(_ sender: Any) { }. То, что я хочу, это просто отображать его в течение двух дней после того, как пользователь загрузит приложение, а затем я хочу, чтобы оно исчезло.

Я создал таймер обратного отсчета:

var timer:Timer?
var time = 172800 //2Days

Тогда я создал эту функцию:

@objc func passedTime(){
    time -= 1

    if time <= 0 {
        timer!.invalidate()
        timer = nil
    }
}

На мой взглядDidLoad:

timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(passedTime), userInfo: nil, repeats: false)  

Я, очевидно, хочу, чтобы время продолжалось, даже если пользователь также закрывает приложение.

1 Ответ

2 голосов
/ 29 апреля 2019

Вы не можете запустить таймер, пока приложение закрыто.Это то, что вам нужно сделать, когда пользователь открывает приложение:

@IBOutlet weak var button:UIButton!

if let stored = UserDefaults.standard.object(forKey:"storedDate") as? Date
  , Date() > stored {

       self.button.isHidden = true
}
else {
     let today = Date()
     let after2Days = Calendar.current.date(byAdding: .day, value: 2, to: today)
     // save
     UserDefaults.standard.set(after2Days,forKey:"storedDate")
} 
...