TIL

[Sesac IOS] 32일차 TIL

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