작성
·
36
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요. 주사위만들기 앱에서 viewDidLoad()를 다음과같이 정의하고 RESET 버튼을 눌렀을 때 viewDidLoad()를 호출해도 되나요? 작동은 하는데 비효율적이고 문제가 되는 부분이 있을 것 같은데 궁금합니다.
override func viewDidLoad() {
super.viewDidLoad()
mainLabel.text = "선택하세요"
// 1) 첫번째, 두번째 이미지 뷰에 준비 이미지를 띄워야 함
comImageView.image = imageLiteral(resourceName: "ready")
myImageView.image = UIImage(named: "ready.png")
// 2) 첫번째, 두번째 레이블에 "준비" 라는 문자열을 띄워야 함
comLabel.text = "준비"
myLabel.text = "준비"
}
답변 1
0
네 안녕하세요! 민경님!
아, 리셋버튼을 누르셨을때 viewDidLoad() 자체를 호출하시면 안됩니다.
왜냐면, 내부적인 메커니즘 때문에.. 보시면 아시겠지만.. 또 상위 클래스의 super.viewDidLoad( ) 도 호출하고 있죠? (내부적으로 viewDidLoad의 경우.. 화면에 진입했을때 앱 내부에서 자동으로 알아서 한번만 호출되게 되어있고, 직접 호출하는 것은 (동작할지라도) 금지되어 있습니다.
따라서, 아래처럼 셋팅 관련 코드들을 묶어서 메서드를 만들어 주시고,
func reset() {
mainLabel.text = "선택하세요"
comImageView.image = UIImage(named: "ready.png")
myImageView.image = UIImage(named: "ready.png")
comLabel.text = "준비"
myLabel.text = "준비"
}
viewDidLoad에서도 호출되게 만들고..
override func viewDidLoad() {
super.viewDidLoad()
reset()
}
RESET 버튼을 눌렀을 때도 reset( )을 따로 호출해주는 것이 맞습니다. :)
고맙습니다. :)