iOS 캠프 TIL - 2021.02.19 금

Updated:

Split View의 doubleColumn이 iPhne11 가로에서는 되는 데 iPhone12에서는 안됨

Split View로 구현을 하고 iPhone11에서 가로모드일 때 doubleColumn으로 보이는 걸 확인하고 찌로에게 알렸는데, 찌로는 가로모드에서도 노트 리스트 화면만 보인다고 했다.

분명히 확인했는데 무슨 문제지 싶어서 보니, 찌로는 iPhone12 시뮬레이터를 사용했다. 다시 iPhone11로 확인하니 doubleColumn으로 보인다.

이상하다?! iPhne12가 11보다 해상도가 높은데? 해상도가 높더라도 Size Class로는 더 작은 걸까? Human Interface Guidelines - Adaptivity and Layout 문서를 확인해보자

Human Interface Guidelines - Adaptivity and Layout

Device Portrait orientation Landscape orientation
iPhone 12 Compact width, regular height Compact width, compact height
iPhone 11 Compact width, regular height Regular width, compact height

가로모드일 때 iPhone11은 Regular width, 12는 Compact width다. 그래서 iPhone12에서는 Split View가 doubleColumn으로 보이지 않았던 것이다.

Split View의 Secondary View에서 Primary View를 참조하고 싶다면?

Split View가 doubleColumn일 때 Primary View는 메모 리스트 화면이고 Secondary View는 메모 내용 화면이다.

메모 내용 화면에서 메모를 추가하고 저장하면 메모 리스트에 바로 업데이트 되게 하고싶었다. 그럴러면 메모 리스트 화면의 인스턴스를 참조해야 하는데?

메모 내용 화면의 뷰 컨트롤러의 메서드를 보니 NavigationController, SplitViewController 둘 다 있다.

먼저 NavigationController의 첫 번째 뷰 컨트롤러를 찾아 테이블 뷰를 리로드 해주었다. 세로 모드일 때는 잘 되는데 가로모드 일 때 않된다.

이번엔 SplitViewController에서 NavigationController을 찾은 후 첫 번째 뷰 컨트롤러를 찾아서 테이블 뷰를 리로드했다. 이제 가로/세로 모두 잘 된다.

세로 모드일 때(Split View가 singleColumn일 때) 는 Secondary View로 이동시 NavigationController를 통해 이동하지만, 가로 모드일 때(Split View가 doublCeolumn일 때) 는 NavigationController을 타는게 아니라 바로 두 화면 모두 보여지게 되므로 이렇게 되는 것 같다.

Leave a comment