목차
이미지 에셋에 추가 안하고 왜 화면에 안 나타나지 계속 코드만 쳐다봄
버튼이 프리뷰에서는 눌리는데 시뮬레이터에서는 안 눌림
- 해결 : 시뮬레이터는 상단이 눌리지 않음. 상단에 여백을 줘서 컨텐츠를 밑으로 내림.
cell 데이터 바인딩을 할 때는 TableViewCell extension에 configure() 함수를 만들어서 그걸로 파라미터 전달해서 하면 좋음
- 이유 : 재사용성과 가독성을 높이는 데 도움
- 코드의 재사용성:
- 동일한 셀 설정 코드가 여러 곳에서 반복적으로 사용될 수 있음.
configure
메서드를 사용하면 이 코드를 한 곳에 모아놓고, 필요할 때마다 호출하여 셀을 설정할 수 있습니다. 이로 인해 코드의 중복을 줄이고, 유지보수성을 높일 수 있음.
- 책임의 분리:
- 뷰 컨트롤러는 데이터를 관리하고 테이블 뷰를 업데이트하는 책임을 가짐. 셀의 구체적인 UI 설정은 셀 자체에서 담당하도록 하여, 역할을 명확히 분리할 수 있음. 이는 MVC(Model-View-Controller) 디자인 패턴을 따르는 좋은 방법임.
ViewModel에서 let items로 데이터 정의하기 보다 enum Setting: String, CaseIterable {
더 좋음.
(Ex)
enum Setting: String, CaseIterable {
case profile = "프로필 및 계정 관리"
case notification = "알림 설정"
case announcement = "공지사항"
case inquiry = "1:1 문의하기"
case terms = "서비스 이용 약관"
case privacy = "개인정보 처리방침"
case version = "앱 버전"
// '최신 버전'은 enum에 추가 ❌. 일단 cell에서 필요할 때 직접 쓰기!!
}
// 사용 예시
// 위에서 테이블뷰셀 바인딩할 때 아래와 같이 사용하면 돼용
cell.configure(text: Setting.allCases[indexPath.row].rawValue)
viewDidLoad() 안에 모든 RxSwift 관련 코드를 넣어서 viewDidLoad()를 무겁게 씀.
- RxSwift 관련 로직을 bindViewModel()에 넣어야 결과가 같아도 의미상 구분이 됨.
모달창 띄울 때 배경색에 투명도를 줘서 조금 어둡게 했는데, 모달창이 사라질 때 투명도가 다시 원래대로 없어지도록 하는 게 잘 안 됨.
- 모달창 사라지게 할 때
view.subviews.last?.removeFromSuperview()
를 두 번 해야 해결됨. 그래야 모달창의 배경도 같이 사라지게 됨.
공통뷰를 구현했는데 이걸 이용한 뷰에서 의도한 대로 요소가 나오지 않음.
- 공통뷰를 선언할 때 private을 써서 접근이 안 되는 거였음.
- 이걸 public으로 바꿨더니 됨.