[ IOS ] μλ μκ³ λ§λ€κΈ° - λ°μ΄ν° νΌμ»€ μ¬μ©ν΄ λ μ§ μ ννκΈ°
곡λΆν λ΄μ©μ μ 리ν κΈμ λλ€.
λ¬Έμ
λ°μ΄ν° νΌμ»€λ₯Ό μ΄μ©νμ¬ μκ°μ μ ννκ³ , μ ν μκ° 1λΆ μ λΆν° νλ©΄μ΄ λΉ¨κ°μλλλ‘ κ΅¬ννλ€. μ νν μκ°μ΄ λλ©΄ λ°°κ²½μμ μλ μνλ‘ λλλ¦°λ€.
ꡬν μμ
1. λ μ΄μμ μμ±
2. μμΈλ λ³μ, μ‘μ ν¨μ μΆκ°
3. μ ν λ μ§μ μκ° μΆλ ₯
4. νμ¬ μκ° μΆλ ₯
5. νμ¬ μκ°μ΄ μ ν μκ°λκΈ° 1λΆ μ λΆν° λ°°κ²½νλ©΄ λΉ¨κ°μμ΄ λλλ‘ κ΅¬ν
1. λ μ΄μμ μμ±
Lableκ³Ό DatePicker λ₯Ό μ΄μ©ν΄ λ μ΄μμμ κ·Έλ¦°λ€.
2. μμΈλ λ³μμ μ‘μ ν¨μ μΆκ°
//ViewController
import UIKit
class ViewController: UIViewController {
@IBOutlet var lblCurrentTime: UILabel!
@IBOutlet var lblSelectTime: UILabel!
//λ·° μμ± μ νΈμΆλλ ν¨μ
override func viewDidLoad() {
super.viewDidLoad()
}
//DatePicker μ ν μ νΈμΆλλ ν¨μ
@IBAction func changeDatePicker(_ sender: UIDatePicker) {
}
}
3. μ νν λ μ§μ μκ° μΆλ ₯νλλ‘ κ΅¬ν
DatePicker μ νμ νΈμΆλλ μ‘μ ν¨μ changeDatePickerμ μ½λλ₯Ό μμ±νλ€.
//DatePicker μ ν μ νΈμΆλλ ν¨μ
@IBAction func changeDatePicker(_ sender: UIDatePicker) {
let datePickerView = sender //(1)μΈμ μ μ₯
let formatter = DateFormatter() //(2)DateFomatter ν΄λμ€ μμ μ μΈ
formatter.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ" //(3)λ μ§ νμ μ§μ
lblSelectTime.text = "μ ν μκ°: " + formatter.string(from: datePickerView.date)//(4)
}
- μ λ¬λ μΈμλ₯Ό λ³μμ μ μ₯νλ€.
- λ μ§λ₯Ό 보μ¬μ£ΌκΈ° μν΄ νμμ΄ νμνλ°, νμ μ§μ μ μν΄ DateFomatter ν΄λμ€λ₯Ό μ¬μ©νλ€.
- DateFomatter.dateFomat μ μ΄μ©ν΄ λ μ§ νμ μ§μ
- μμΈ λ³μ.text μ μΈμ.date κ°μ λ¬Έμμ΄λ‘ νλ³ννμ¬ κ° μ€μ
4. νμ¬ μκ° μΆλ ₯λλλ‘ κ΅¬ν
νμ¬ μκ°μ΄ κ³ μ λμ΄ μμ§ μκ³ λ§€μ΄ κ°±μ λκ² νκΈ° μν΄μλ νμ΄λ¨Έ κΈ°λ₯μ΄ νμνλ€
Timer.scheduledTime(timeInterval: interval, target: self,
select: timeSelector, userInfo: nil, repeats: true)
Timer ν΄λμ€μ scheduledTime λ©μλλ₯Ό μ΄μ©νμ¬ νμ΄λ¨Έλ₯Ό μ€μ νλ€.
νμ΄λ¨Έ μ€μ μ μν΄ νμν μμ | |
timeInterval | νμ΄λ¨Έ κ°κ²© |
target | λμλ view |
selector | νμ΄λ¨Έκ° ꡬλλ λ μ€νν ν¨μ |
userInfo | μ¬μ©μ μ 보 |
reapts | λ°λ³΅μ¬λΆ |
λ°λΌμ Timer.scheduledTime()λ₯Ό μ¬μ©νκΈ° μ interval κ³Ό selectλ₯Ό λ§λ€μ΄μΌνλ€.
μ¦, νμ΄λ¨Έ κ°κ²©κ³Ό μ€νν ν¨μκ° νμνλ€.
ν¨μλ₯Ό ꡬννκΈ° μ , λ¨Όμ νμν λ³μ λλ μμλ₯Ό λ§λ λ€.
class MissionDatePickerViewController: UIViewController {
let timeSelector:Selector = #selector(MissionDatePickerViewContriller.updateTime)
let interval:Double = 1.0 // 1μ΄ μλ―Έ
@IBOutlet var lblCurrentTime: UILabel!
@IBOutlet var lblSelectTime: UILabel!
.
.
.
}
- κ³§ λ§λ€ ν¨μλ₯Ό μ§μ ν selectorλ₯Ό νλ μμ±νλ€.
- νμ΄λ¨Έμ μ¬μ©λ intervalλ₯Ό μμ±νλ€.
νμ΄λ¨Έ ꡬλ μ νΈμΆλ ν¨μλ₯Ό ꡬνν΄λ³΄μ
@objc func updateTime(){
let currentDate:NSDate = NSDate() //νμ¬ μκ°μ κ°μ Έμ€λ ν΄λμ€
let fomatter: DateFormatter = DateFormatter() // λ μ§ νμμ μ§μ ν΄ μ€ ν΄λμ€
fomatter.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ sμ΄" //λ μ§ νμ μ§μ
lblCurrentTime.text = "νμ¬ μκ°: " + fomatter.string(from: currentDate as Date)
}
//#selector()μ μΈμλ‘ μ¬μ©λ λ©μλλ₯Ό μ μΈν λ Object-Cμμ νΈνμ±μ μνμ¬ ν¨μ μμ @objc ν€μλ νμ
- μ¬μ© λͺ©μ : νμ΄λ¨Έκ° ꡬλλ λ μ€ν
- νμν κΈ°λ₯ : νμ¬ μκ° κ°±μ
- κ·Έλ λ€λ©΄ 무μμ ꡬνν΄μΌ νλκ°? lblCurrentTime.textμ νμ¬ μκ°μ μ μ₯ν΄ μ£Όμ΄μΌ νλ€.
- νμν κ²μ? νμ¬ μκ°μ κ°μ Έμμ€ ν΄λμ€, NSDate ν΄λμ€ + μΆκ°μ μΌλ‘ λ μ§ νμμ μ§μ ν DateFomatter ν΄λμ€
+ #selector()μ μΈμλ‘ μ¬μ©λ λ©μλλ₯Ό μ μΈν λ Object-Cμμ νΈνμ±μ μνμ¬ ν¨μ μμ @objc ν€μλ νμ
5. νμ¬ μκ°μ΄ μ ν μκ°λκΈ° 1λΆ μ λΆν° λ°°κ²½νλ©΄ λΉ¨κ°μμ΄ λλλ‘ κ΅¬ν
νμ¬ μκ° == μ ν μκ° -1 μΌλ λ°°κ²½ νλ©΄μ λΉ¨κ°μμΌλ‘ λ³κ²½νλ€.
λ¨Όμ νμ¬ μκ°κ³Ό μλλ μκ°μ μ μ₯ν λ³μλ₯Ό μ μΈνλ€.
class MissionDatePickerViewController: UIViewController {
...
var currentTime: String = String() //νμ¬ μκ°μ μ μ₯ν λ³μ
var alarmTime: String = String() //μλλ μκ°μ μ μ₯ν λ³μ
@IBOutlet var lblCurrentTime: UILabel!
@IBOutlet var lblSelectTime: UILabel!
.
.
.
}
κ·Έλ¦¬κ³ changeDatePickerμ updateTimeμμ κ°κ° alarmTimeκ³Ό currenTimeμ κ°μ μ μ₯νλ€.
updateTime λ©μλμμλ currentTime λ³μλ₯Ό μν formatterλ₯Ό λ°λ‘ μμ±ν΄ μ€μ ν΄μ€λ€.
//DatePicker μ ν μ νΈμΆλλ ν¨μ
@IBAction func changeDatePicker(_ sender: UIDatePicker) {
let datePickerView = sender //μΈμ μ μ₯
let formatterDate = DateFormatter() //DateFomatter ν΄λμ€ μμ μ μΈ
formatterDate.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ" //λ μ§ νμ μ§μ
lblSelectTime.text = formatterDate.string(from: datePickerView.date)
alarmTime = formatterDate.string(from: datePickerView.date - 60) //μλλ μκ°μ μ μ₯νλ€.
}
//νμ΄λ¨Έκ° ꡬλλ λ μ€νν ν¨μ
@objc func updateTime(){
let currentDate:NSDate = NSDate()
let fomatterDate: DateFormatter = DateFormatter()
let formatterTime = DateFormatter()
fomatterDate.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ sμ΄"
formatterTime.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ"
lblCurrentTime.text = fomatterDate.string(from: currentDate as Date)
currentTime = formatterTime.string(from: currentDate as Date)
}
νμ¬ μκ°κ³Ό μλμκ°μ λΉκ΅ν΄ μ€ ν¨μλ₯Ό ꡬννλ€.
import UIKit
class MissionDatePickerViewController: UIViewController {
.
.
.
//νμ¬ μκ°κ³Ό μλ μκ°μ λΉκ΅νλ ν¨μ
func compareTime(){
var backgroundColor: UIColor
if(currentTime == alarmTime){
backgroundColor = UIColor.red
}
else{
backgroundColor = UIColor.white
}
view.backgroundColor = backgroundColor
}
}
compareTime ν¨μλ λ§€ interval κ°±μ λλ§λ€ νμ¬ μκ°κ³Ό μλ μκ°μ λΉκ΅ν΄μΌ νκΈ° λλ¬Έμ νμ΄λ¨Έκ° ꡬλλ λ μ€ννλ updateTime ν¨μμμ νΈμΆλλλ‘ νλ€.
@objc func updateTime(){
let currentDate:NSDate = NSDate() //νμ¬ μκ°μ κ°μ Έμ€λ ν΄λμ€
let fomatterDate: DateFormatter = DateFormatter() // λ μ§ νμμ μ§μ ν΄ μ€ ν΄λμ€
let formatterTime = DateFormatter()
fomatterDate.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ sμ΄" //λ μ§ νμ μ§μ
formatterTime.dateFormat = "yyyyλ
MMμ ddμΌ a hhμ mmλΆ"
lblCurrentTime.text = fomatterDate.string(from: currentDate as Date)
currentTime = formatterTime.string(from: currentDate as Date)
compareTime()
}
곡λΆν μλ£
Do It! μ€μννΈλ‘ μμ΄ν° μ± λ§λ€κΈ° κ°μ 5ν