Установить кнопку возврата по умолчанию на ViewController - PullRequest
0 голосов
/ 31 августа 2018

short : Я не понимаю, как программно добавить кнопку default back.

long : меня попросили написать приложение для iOS, без какого-либо предыдущего опыта, я решил следовать советам и коду, данному Никола Загини .

В коде , приведенном вместе со статьей, я действительно не понимаю откуда берется кнопка «назад».

Приложение имеет три экрана

  • один, чтобы выбрать город (папка WeatherLocation)
  • тот, который отображает все города, которые уже были выбраны (папка WeatherList)
  • тот, который отображает погоду для города, в котором щелкнули список (папка WeatherDetail)

Для WeatherLocation есть кнопка +:

enter image description here

Эта кнопка добавлена ​​в код, но я не могу найти где и как кодируется кнопка «Назад» в WeatherDetails (см. выше), и как кодируется действие, выполняемое при нажатии кнопки «Назад».

enter image description here

Я ищу в Интернете и нашел, как установить кнопку на панели навигации:

let leftBarButtonItem: UIBarButtonItem = {
    let barButtonItem = UIBarButtonItem(title: "Left Item", style: .plain, target: self, action: nil)
    barButtonItem.tintColor = UIColor.red
    return barButtonItem
}()


override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationItem.leftBarButtonItem = leftBarButtonItem
}

Я также обнаружил, что существует backBarButtonItem но я не смог найти, как правильно использовать это свойство.

Более того, в коде Никола Загини нет ничего похожего на backBarButtonItem для включения Кнопка Назад, ни в XIB, ни в раскадровке.

Может кто-нибудь дать мне несколько советов о том, как установить кнопку возврата?

1 Ответ

0 голосов
/ 31 августа 2018

Спасибо большое !!

В коде Никола Загини секрет наличия кнопки возврата по умолчанию находится (например) в функции navigateToWeatherDetail в классе WeatherListDefaultRouter, где новый ViewController помещается в NavigationController:

func navigateToWeatherDetail(withLocation location: Location) {
    if let weatherDetailVC = self.weatherDetailBuilder()?.buildWeatherDetailModule(withLocation: location) {
        self.viewController?.navigationController?.pushViewController(weatherDetailVC, animated: true)
    }
}
...