반응형
문제 상황
Rx 바인딩도 정상적으로 되어 있고, 버튼 액션도 설정했지만, 버튼을 눌러도 로그가 찍히지 않고 이미지도 변경되지 않음.
특히 setChecked(_: Bool)이나 @objc 메서드들이 호출되지 않는 상태.
원인 분석
- 해당 체크박스가 포함된 InfoRowView는 WorkingConditionsContainerViewController의 view에 존재함.
- 하지만 최종 부모 컨트롤러에서 해당 VC를 자식 뷰컨트롤러로 등록하지 않고 view만 addSubview() 하여 붙였음.
- 이로 인해 viewDidLoad()가 호출되지 않았고, 내부에서 설정된 Rx 바인딩 및 addTarget 등의 액션 로직이 실행되지 않음.
해결 방법
WorkingConditionsContainerViewController를 자식 컨트롤러로 명시적으로 등록하고, 그 뷰를 container에 붙이도록 수정
extension UIViewController {
func add(_ child: UIViewController, to container: UIView) {
addChild(child)
container.addSubview(child.view)
child.view.snp.makeConstraints { $0.edges.equalToSuperview() }
child.didMove(toParent: self)
}
}
그리고 부모 컨트롤러에서 다음과 같이 호출
add(workingConditionsContainerViewController, to: workingConditionsContainer)반응형
'트러블 슈팅' 카테고리의 다른 글
| 체크박스를 클릭해도 이미지가 바뀌지 않음 (0) | 2025.07.23 |
|---|---|
| AutoLayout - 화면 겹침 현상 (StackView 내 CustomView 겹침) (0) | 2025.07.17 |
| NSAttributedString - 적용 순서로 인해 강조 색상이 반영되지 않음 (1) | 2025.07.17 |
| Firebase Auth - 앱을 재설치해도 자동로그인이 유지되는 현상 (2) | 2025.07.09 |
| [ Xcode ] Unable to boot simulator (0) | 2025.02.04 |