向下滚动并从UITableViewController返回时,导航栏标题变小

时间:2019-01-02 06:37:58

标签: ios swift uitableview

通过滚动从表格视图返回时,主导航栏变小。谁能告诉我实现大标题的正确方法?

视频样本 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 :(得分:1)

这对您有帮助!

从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

答案 1 :(得分:0)

您需要致电

self.navigationController?.navigationBar.prefersLargeTitles = true

还有这个

self.navigationItem.largeTitleDisplayMode = .never

viewWillAppear()

答案 2 :(得分:0)

在修正问题之后,我得出的结论是:

将大标题与UIViewController结合使用时,这可能是一个错误。

然后我在您的一条评论中找到了: 但是iPhone设置和App Store具有类似的动画...

但事实是,导航发生时,两个参考应用程序都将UITableViewController的视图控制器的源使用segue子类。因此,我尝试了类似的方法,并且我的怀疑是正确的。您可以找到reference project here上没有动画问题的地方。


因此,您可能希望将源视图控制器更改为UITableViewController的子类,直到对此问题有正式修复为止。