스토리보드로 인해 뷰 컨트롤러가 초기화되는 문제
스토리보드로 인해 의도치 않게 뷰 컨트롤러가 초기화되는 문제 1. 문제 상황 로그인 상태에 따라 LoginViewController 또는 MainViewController를 rootViewController로 설정하는 코드가 있음. 그러나 로그인 상태가 false일 때도 MainViewController가 초기화되었다가 해제되는 문제가 발생함. ...
스토리보드로 인해 의도치 않게 뷰 컨트롤러가 초기화되는 문제 1. 문제 상황 로그인 상태에 따라 LoginViewController 또는 MainViewController를 rootViewController로 설정하는 코드가 있음. 그러나 로그인 상태가 false일 때도 MainViewController가 초기화되었다가 해제되는 문제가 발생함. ...
viewDidLayoutSubviews는 iOS의 UIViewController 생명주기 메서드 중 하나로, 뷰의 서브뷰들이 레이아웃된 직후 호출된다. 주로 레이아웃 조정이 필요한 작업을 이 시점에 처리한다. 정의 override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() ...
1. convert(_:to:) 내 뷰의 좌표를 다른뷰 기준으로의 좌표값을 반환함. let newRect = myView.convert(myView.bounds, to: myView.superView) //이 말은 myView.bounds가 myView.superView 기준으로의 상대적 좌표값을 반환한다는 뜻 2. convert(_:...
뷰가 차지하는 사각형의 크기와 위치를 나타내는 구조체. origin : 사각형의 시작 위치(좌상단) 좌표 size : 사각형의 너비(width)와 높이(height) struct CGRect { var origin: CGPoint vaar size: CGSize } let rect = CGRect(x: 50, y: 100, wid...
Realm은 빠르고 가벼운 모바일 데이터베이스로, SQLite보다 빠른 성능을 제공하며, 사용법이 간단함. iOS에서 오프라인 데이터 저장이나 캐싱 처리에 많이 사용됨. 1. Realm의 특징 빠른 데이터 처리 → Core Data보다 읽기/쓰기 속도가 빠름 간편한 API → write {} 블록을 사용해 저장/삭제 가능 NoSQL ...
앱 실행 → LaunchScreen.storyboard 표시 LaunchScreen.storyboard의 레이아웃이 표시되지만, 코드는 실행되지 않음. 앱이 실행되면서 시스템이 LaunchScreen을 먼저 보여주는 이유는 앱이 로드될 동안 부드러운 사용자 경험(UX)을 제공하기 위함. 앱의 메인 진입점...
스택 기반 체계(예를 들면 브라우저의 뒤로가기)로 계층화된 내용을 탐색하기 위한 컨테이너 뷰 컨트롤러 하나 이상의 자식 컨트롤러가 존재해야함. Stack : LIFO(Last In First Out)로 역순 탐색을 위한 구조 네비게이션 컨트롤러 객체는 네비게이션 스택 이라고 하는 정렬된 배열을 사용하여 자식 뷰 컨트롤러를 관리합니다 . ...
새로운 값이 들어오면, 기존에 진행 중이던 작업을 취소하고 새로운 작업을 시작하는 연산자 button.rx.tap .flatMapLatest { Observable.just("새로운 값 방출") } .subscribe(onNext: { print($0) }) 버튼을 클릭 새로운 값 방출 : button.rx.tap 기존의...
📌 1번: 버튼 클릭 이벤트 처리 문제 내용 버튼(UIButton)을 PublishSubject<Void>로 감싸서 Rx 방식으로 클릭 이벤트를 처리하라. 버튼이 클릭될 때마다 "버튼이 클릭됨"이라는 문자열을 출력하라. 버튼을 3번 클릭하면 "버튼이 3번 클릭됨"이라는 메시지를 출력하라. 정답 코드 let button ...
rx UIKit 컴포넌트의 이벤트들을 Observable로 변환해주는 기능을 한다. 컴포넌트.rx.이벤트 방식으로 작성한다. let button = UIButton() button.rx.tap .subscribe(onNext: { print("버튼 클릭됨") }) .disposed(by: disposeBag) zip ...