2016-11-10 122 views
1

創建一個倒數計時器我已經寫了這個代碼,倒計時到一個特定的日期。斯威夫特

我將如何讓這個倒計時的每一個元素在一個單獨的標籤顯示。

所以我有一個標籤,顯示的天數,標籤顯示的小時數,標籤顯示分鐘數和標籤顯示的秒數。

代碼:

class ViewController: UIViewController { 

@IBOutlet weak var dateLabelOutlet: UILabel! 

let currentDate = Date() 
let dateFormatter = DateFormatter() 

let userCalendar = Calendar.current 

let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true) 
    timer.fire() 

} 

func printTime() 
{ 
    dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss" 
    let startTime = Date() 
    let endTime = dateFormatter.date(from: "25/12/16 00:00:00") 
    let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!) 

    dateLabelOutlet.text = "\(timeDifference.day!) Days \(timeDifference.hour!) Hours \(timeDifference.minute!) Minutes \(timeDifference.second!) Seconds" 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

+0

既然你已經分離的組分,創建丟失的3個標籤,分別分配的組件。 – vadian

回答

0

你的代碼已經計算DateComponents的差異,然後建立與日,小時,分鐘和秒的差異組合的字符串。

只是改變這一行:

dateLabelOutlet.text = "\(timeDifference.day!) Days \(timeDifference.hour!) Hours \(timeDifference.minute!) Minutes \(timeDifference.second!) Seconds" 

你需要創建4個標籤,將timeDifference.day於一體,timeDifference.hour在另一個,在第三timeDifference.minute,並timeDifference.second在第四標籤。

如果你寫的代碼,我覺得這將是明顯的 - 或者是別人的代碼,你複製/粘貼?

+0

謝謝我早些時候嘗試過,但我得到了一個錯誤,導致模擬器每次載入應用程序時崩潰。但這一次它的工作 –

+0

好的,這是一個單獨的問題。當你有這樣的問題時,要嘗試的就是退出Xcode和模擬器並重啓它們,或者從項目菜單中選擇「clean」。 –