如何在 iOS 11 中通过 UITableView 关闭调整大标题?

Mil*_*sáľ 5 uitableview ios swift ios11

iOS 11 中有这个大标题功能,当UITableViewController表格滚动到顶部时显示大标题,当用户从顶部滚动表格时会折叠为标准小标题。这是标准行为。我需要导航控制器的行为有所不同 - 我需要始终显示大标题。如何实现这一目标?

以下代码没有帮助,滚动时它仍然会崩溃。

navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always
Run Code Online (Sandbox Code Playgroud)

San*_*der 4

UITableViewController我在嵌入时无意中实现了它UIViewController

我不确定这是苹果的错误还是故意的行为。

所以堆栈就像UINavigationController-> UIViewController(用作容器)->一样简单UITableViewController

这是带有嵌入式全屏的视图控制器的示例UITableViewController

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var vc = UITableViewController(style: .plain)
    var array: [String] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        vc.view.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(vc.view)
        view.addConstraint(view.leadingAnchor.constraint(equalTo: vc.view.leadingAnchor))
        view.addConstraint(view.rightAnchor.constraint(equalTo: vc.view.rightAnchor))
        view.addConstraint(view.safeAreaLayoutGuide.topAnchor.constraint(equalTo: vc.view.topAnchor))
        view.addConstraint(view.bottomAnchor.constraint(equalTo: vc.view.bottomAnchor))

        vc.tableView.delegate = self
        vc.tableView.dataSource = self

        array = "0123456789".characters.map(String.init)
        vc.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "identifier")

        title = "Title"
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return array.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
        cell.textLabel?.text = array[indexPath.row]
        return cell
    }
}
Run Code Online (Sandbox Code Playgroud)

这是结果

在此输入图像描述

希望能帮助到你。

PS令人惊讶的是,我当前的问题是我不知道如何使用这种架构获得崩溃行为:)