내비게이션 바에서 작은 제목으로의 큰 제목 전환이 iOS 13에서 원활하지 않음


11

나는이 UINavigationController그것의의 기본적 가치를 navigationBar.prefersLargeTitles = true.

I가 그 전환하고 falsepush 새로운 장면에은을 (를 호출 할 수 있습니다 DetailsViewController로 변경하여) viewWillDisappear.

override func viewWillDisappear(_ animated: Bool) {
   super.viewWillDisappear(animated)
   navigationController?.navigationBar.prefersLargeTitles = false
}

이제는을 DetailsViewController사용하고 willMove(to parent:)있습니다.

override func willMove(toParent parent: UIViewController?) {
        navigationController?.navigationBar.prefersLargeTitles = true
}

큰 타이틀로 다시 전환합니다.

방법 첨부 된 스냅 샷 관찰 아이폰 OS (13) 방법으로 그 일을 아이폰 OS (12)가 고려를하고있는 아이폰 OS (12)가 올바른 동작입니다.

iOS 13 :

iOS 13

iOS 12 :

iOS 12


.prefersLargeTitles상세보기 컨트롤러를 탐색 스택으로 푸시 할 때 전혀 변경할 필요가 없습니다 . 작은 제목을 자동으로 사용한 다음 루트보기 컨트롤러로 돌아 가면 큰 제목으로 돌아갑니다. 내가 아는 한
henrik-dmg

@ henrik-dmg 나는 그것이 이전과 같은지 확신 할 수 없지만 더 이상 그렇게하지 않으면 모든 것이 큰 제목으로 가지 않습니다.
Mohmmad S

1
largeTitleDisplayMode에. automatic원하는 전환을 가져와야합니다.
Harry J

@HarryJ 어디서?
Mohmmad S

viewDidLoad 또는 내비게이션 컨트롤러 내에서navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Harry J

답변:


21

당신이하는 일은 항상 잘못되었습니다. 탐색 표시 줄 prefersLargeTitlestrue한 번으로 설정 하고 다시 터치하지 않아야합니다.

이 나타나는 각 뷰 컨트롤러는 큰 제목에 대해 무엇을 변경하는 방법은 해당 뷰 컨트롤러 자체를 설정하는 것입니다 navigationItem(그에서 viewDidLoad) 원하는 것으로 largeTitleDisplayMode. 따라서 첫 번째 vc가 .always있고 두 번째 vc가 있으면 .never모든 것이 부드럽게됩니다.


좋은 답변입니다! 그것이 크고 작은 타이틀을 동시에 가질 수있는 방법이라는 것을 결코 알지 못했습니다!
Kacper Cz

0

나는 같은 문제가 있었고 두 번째 ViewController의 스토리 보드에 NavigationItem을 배치해야했습니다. 내 NavigationItem는 SEGUE에 의해 자동으로 생성되고 있던 그 prefersLargeTitle에서는 viewDidLoad()보기가 등장하기 전에 작성이 완료되지 않았습니다. 스토리 보드에 NavigationItem을 추가하면이 문제가 해결 prefersLargeTitle되어 스토리 보드의 속성 메뉴에서 를 설정할 수있었습니다 .


0

필자의 경우이 문제는의 자식 인 뷰 컨트롤러에 대한 segue 동안 발생했습니다 UITabBarController. largeTitleDisplayMode자식 뷰 컨트롤러 설정 이이 버그를 수정하기에 충분하지 않았습니다.

나는 UITabBarController가 현장에 탐색 항목을 추가하고 설정하여 문제를 해결 한 largeTitleDisplayMode.never가.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.