Tworzymy aplikację, która wymaga różnych nagłówków dla różnych widoków połączonych za pomocą kontrolera nawigacyjnego i kontrolera widoku kart. Początkowy widok ma obraz jako tytuł. Drugi widok zawiera tekst jako tytuł, a trzeci również tekst jako tytuł.Dlaczego zawartość paska nawigacji jest wyświetlana w systemie iOS 11, ale nie w systemie IOS 10?
Używamy scenorysów do budowy tej aplikacji, tutaj jest hierarchia kontrolerów.
Navigation Controller --> Tab Bar Controller --> View Controller 1, View Controller 2, View Controller 3
Oto kod używamy do wyświetlania obrazu na pierwszym kontrolerze widoku:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let titleView = UIImageView()
titleView.contentMode = .scaleAspectFit
titleView.image = UIImage(named: "logo_white_thin")
self.parent?.navigationItem.titleView = titleView
self.parent?.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.isHidden = false
}
Oto kod używamy do wyświetlania tekstu jako tytułu dla pozostałych dwóch kontrolerów widoku.
override func viewWillAppear(_ animated: Bool) {
guard let uid = Auth.auth().currentUser?.uid else {return}
guard let username = users[uid]?.username else {return}
self.parent?.navigationItem.titleView = title(text: username)
self.parent?.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.isHidden = false
print("Setting navigation bar title to ", username)
}
tytuł funkcja jest rozszerzeniem zbudowany, aby powrócić etykietę:
func title(text: String) -> UILabel {
let label = UILabel()
label.text = text
label.textColor = UIColor.white
label.font = UIFont.boldSystemFont(ofSize: label.font.pointSize)
return label
}
Teraz problem jest, gdy badamy naszą aplikację na iOS 11, kontrolery nawigacyjne działają poprawnie i wszystkie pojawi dobrze. Kiedy testujemy naszą aplikację na iOS 10, obraz i tekst z kontrolerów nawigacji magicznie znikają. Jakiś pomysł dlaczego tak się dzieje?
Oto obraz Siema: Picture of the issue. On the left, no title shows up (IOS 10) and on the right a title does show up (IOS 11)
Używam najnowszej wersji Xcode z Swift 4. Z góry dziękuję za wszelką pomoc.
spróbować z ramki zestaw etykiet w tytule() metoda – iPatel
@iPatel Nie sądzę Jego problem z metodą tytuł() bo ja też mam kontroler widoku, który tytuł jest imageview i to się nie pojawi ... – itsfaraaz