Заголовок панели навигации становится маленьким при прокрутке вниз и возвращении из UITableViewController - PullRequest
0 голосов
/ 02 января 2019

Основная панель навигации становится маленькой, когда вы возвращаетесь из таблицы с прокруткой. Может кто-нибудь показать мне правильный способ реализации большого заголовка?

Пример видео https://i.imgur.com/zoATpja.gif

ViewController

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.navigationController?.navigationBar.prefersLargeTitles = true
}

DestinationViewController

let reuseIdentifier = "cell"

let array = ["Test 1","Test 2","Test 3"]

override func viewDidLoad() {
    self.title = "TableView"
    self.navigationItem.largeTitleDisplayMode = .never

    self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: reuseIdentifier)
    self.tableView.delegate = self
    self.tableView.dataSource = self
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return array.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath)

    cell.textLabel?.text = array[indexPath.row]

    return cell
}

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Вам нужно позвонить по этому

self.navigationController?.navigationBar.prefersLargeTitles = true

и это

self.navigationItem.largeTitleDisplayMode = .never

в viewWillAppear()

0 голосов
/ 02 января 2019

Ну, поработав над проблемой, я пришел к выводу, что:

Вероятно, это ошибка при использовании больших заголовков в сочетании с UIViewController.

Тогда я нашел в одном из ваших комментариев: , но настройки iPhone и App Store имеют похожую анимацию ...

Но дело в том, что оба эталонных приложения используют подкласс UITableViewController для исходного (segue) контроллера представления, когда происходит навигация. Поэтому я попробовал подобный подход и ДА мои сомнения верны. Справочный проект можно найти здесь , где проблемы с анимацией нет.


Таким образом, вы можете изменить контроллер представления исходного кода на подкласс UITableViewController, пока не появится официальное исправление этой проблемы.

0 голосов
/ 02 января 2019

Это тебе поможет !!

Вызовите этот метод из viewDidLoad ()

/**
In Swift 4.2
*/
 func setupNavBar() {

            self.title = "titleName"
            self.navigationController?.navigationBar.prefersLargeTitles = true
            self.navigationController?.navigationItem.largeTitleDisplayMode = .always        
     }

В DestinationView Controller поместите эти две строки в метод ViewDidLoad.

self.navigationItem.largeTitleDisplayMode = .never
self.navigationController?.navigationBar.prefersLargeTitles = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...