32일차 수업 내용을 정리한 글입니다.
Learned
forEach와 for-in loop의 차이점
- forEach 메서드에서는 continue, break 구문을 사용할 수 없음.
- forEach 메서드에서 return 구문은 현재 진행중인 블록을 빠져나갈 뿐
남은 반복 호출을 생략하거나 탈출할 수 없음.
커스텀 container view controller 만들기
- 컨테이너 뷰 컨트롤러는 다른 뷰 컨트롤러를 관리하고 보여주는 역할이며,
대표적으로 UINavigationController와 UITabBarController가 있음. - 이때 컨테이너와 컨텐츠 뷰 컨트롤러 사이에 부모, 자식 관계를 형성하여
자식 뷰 컨트롤러에서 이벤트를 부모 뷰 컨트롤러에서 처리할 수 있음. - 한 예시로 뷰 컨트롤러의 일부 영역에서 다른 뷰 컨트롤러의 컨텐츠를 보여줄 수 있음.
class ContainerViewController: UIViewController {
// 컨테이너 뷰 컨트롤러의 자식 뷰 컨트롤러 배열
let viewControllers = [ vc1, vc2, vc3 ]
// 컨텐츠를 보여줄 뷰
let containerView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
viewControllers.forEach { vc in
self.addChild(vc)
containerView.addSubview(vc.view)
vc.view.frame = containerView.bounds
// 자식 뷰 컨트롤러의 didMove 메서드 호출
vc.didMove(toParent: self)
}
}
}
didMove(toParent:)
새로운 뷰 컨트롤러가 추가되거나 삭제될 때 호출되는 메서드로서,
자식 뷰 컨트롤러에서 이 메서드를 재정의함으로써 해당 뷰 컨트롤러가 컨테이너에 추가될 때 반응할 수 있다.
컨테이너 뷰 컨트롤러에 새로운 뷰 컨트롤러를 자식으로 설정하고 나서 자식 뷰 컨트롤러의 이 메서드를 반드시 호출해야함.
자식 뷰 컨트롤러가 부모에게서 제거될 경우 자동으로 호출됨.
left, right 와 leading, trailing
- 일부 국가에서는 오른쪽에서 왼쪽 방향(RTL: Right To Left)으로 글자를 쓰거나 읽기 때문에
이에 대응하기 위해 left, right와 leading, trailing을 구분함. - left, right는 절대적인 위치를 의미함. 즉, 단어 그대로 왼쪽과 오른쪽을 의미함.
- leading, trailing은 글이 시작되고 끝나는 위치를 의미함.
지역에 따라 leading과 trailing은 왼쪽이 될 수도 있고 오른쪽이 될 수도 있음.
이상입니다.
'TIL' 카테고리의 다른 글
[Sesac IOS] 34~35일차 TIL (0) | 2022.08.22 |
---|---|
[Sesac IOS] 33일차 TIL (0) | 2022.08.18 |
[Sesac IOS] 31일차 TIL (0) | 2022.08.17 |
[Sesac IOS] 30일차 TIL (0) | 2022.08.16 |
[Sesac IOS] 29일차 TIL (0) | 2022.08.12 |