📋 UI Switch
< 구현하고자 했던 것 >
1. UISwitch를 탭한다.
2. alert가 뜬다.
3. alert에서 OK를 누르면 UISwitch의 상태(value)가 바뀐다.
여기서, UISwitch의 값을 바꿀려고 터치를 했지만
alert가 뜨고 사용자가 OK를 누를 때 까지는 값이 변하지 않아야 한다.
이럴 때는, setOn을 이용한다.
결론적으로,
1. Switch가 On 상태로 있고, 터치하여 Off하고자 할때 alert가 뜬다.
2. cancel을 누르면 원래 Switch의 값이 유지가 된다.( = On으로 유지 )
3. OK를 누르면 Switch의 값이 Off가 된다.
@IBAction func switchValueChanged(_ sender: Any) {
if self.mySwitch.isOn { return } // 1
self.mySwitch.setOn(true, animated: true) // 2
let alert = UIAlertController(title: "해당 기능을 끄시겠습니까?", message: "어쩌구 저쩌구", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { _ in
// self.mySwitch.setOn(true, animated: true) // 3
}))
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
self.mySwitch.setOn(false, animated: true) // 4
}))
self.present(alert, animated: true, completion: nil)
}
1. Switch를 Off할때만 alert를 띄울 것 이기 때문에 isOn이면 return 해준다.
2. 일단 Switch를 On으로 유지해놓기 위해 setOn을 호출한다.
On으로 해놓아야하므로 true를 return 해주고, animated는 반드시 true를 넣어준다.
3. 있어도 되고 없어도 상관없다.
이 alert가 불리는 상태는 반드시 On인 상태이고 && cancel을 눌렀으니 Switch 값 변화가 없다.
-> 기존에 On 이니까 setOn 굳이 호출 안해도 된다.
4. OK를 눌렀으니, 값이 off로 바뀐다.
setOn에 false를 넘겨준다. animated도 true로 넘기는게 더 보기 좋을 것이다.
참고블로그 : https://zeddios.tistory.com/1070
'🍎 iOS > UIKit' 카테고리의 다른 글
[iOS] reloadData 개요 및 참고사항 (0) | 2023.03.25 |
---|---|
[iOS] 탭바 - UITabBarController (0) | 2023.03.25 |
[iOS] Modal dismiss 이후 reloadData() 하기 (0) | 2023.03.21 |
[Swift][UIkit] iOS앱의 구조와 코코아터치 프레임워크 (0) | 2022.12.25 |
[Swift][UIKit] iOS의 시작 (0) | 2022.12.25 |