목표 숫자를 입력하는 TextField와 목표 알림을 사용할지 선택하는 Switch를 설정에 추가했다.
tfTaget.text != "" && swTarget.isOn
일 때 프로토콜을 이용해서 목표값(targetValue)를 넘겨줬다.
class CountLable: UILabel{
var target : String?
override var text: String?{
didSet{
print("목표값 도달")
}
}
}
Lable 클래스를 변형해 사용해보려 했는데 실패하고..
어차피 [Lable이 변할 때 = 화면을 터치 했을 때] 이기 때문에 카운트 값을 올리고 목표값과 같은지 확인해 알림을 주었다.
view.backgroundColor = UIColor.yellow
알림은 한 번에 알아차리기 위해 배경색을 바꾸는 방식으로 했다.
진동과 소리도 함께 넣을지, 배경색을 노란색으로 확정할지 아직 고민중이다...!
목표에 도달한 후 카운트 값이 "목표값 ➕➖ 1" 이면 다시 원래 배경색으로 돌아오도록 했다.
어차피 버튼 터치와 슬라이드 방식을 선택하면 segue로 화면 이동하기 때문에 segue로 값을 전달하면 간단하고 문제 없이 작동했다.
if segue.identifier == "sgSlide"{
let slideController = segue.destination as! SlideCountController
if tfTaget.text != "" && swTarget.isOn{
slideController.targetValue = tfTaget.text
}
}
하지만 사용자는 TextField에 문자나 기호도 입력할 수 있어 제한이 필요했다.
TextField의 attribute에서 Text Input Traits - Keyboard Type을 Number Pad로 선택하면 텍스트 입력 시 숫자로만 이루어진 패드가 나와서 숫자만 입력하게 된다!!
설정 완료 버튼을 누르면 화면을 넘기기 전에 tfTaget.text == "" && swTarget.isOn
를 확인한다.
만약 빈칸인데 스위치가 켜져 있다면 알림창을 띄우고 화면을 넘기지 않는다!