Проблема контроллера push-представления iOS 11.0 с navigationItem.searchController - PullRequest
0 голосов
/ 16 февраля 2019

Я попытался выдвинуть дочерний контроллер представления с дисплеем searchBar, во время анимации появилась мигающая серая полоса (см. Рисунок 2), как я могу исправить эту анимацию?Спасибо.

Код:

override func viewDidLoad() {
  super.viewDidLoad()

  if title == nil {
    title = "Title"
  }

  if #available(iOS 11.0, *) {
    navigationController?.navigationBar.prefersLargeTitles = true
    navigationItem.searchController = searchController
  }

  definesPresentationContext = true
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  tableView.deselectRow(at: indexPath, animated: true)


  let vc = ViewController()
  vc.hidesBottomBarWhenPushed = true
  navigationController?.pushViewController(vc, animated: true)
}

step1 step2 step3

1 Ответ

0 голосов
/ 16 февраля 2019

Если вы пытаетесь push того же ViewController(), который встроен в NavigationController, то полоса, которую вы видели, может быть navigationBar вашего ViewController().

Попробуйте создать новый контроллер, затем push, чтобы увидеть, существует ли по-прежнему полоса, например:

class NewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .red
    }
}

Затем в didSelectRowAt вашего ViewController нажмите NewController, вот так:

let newVC = NewController()
navigationController?.pushViewController(newVC, animated: true)
...