В настоящее время я пытаюсь пройти через " Learning Swift 3rd Edition " от издателя O'Reilly, исходный код которого доступен здесь . В книге много известных ошибок , однако я не смог найти в ней свою конкретную проблему. Эта проблема также появляется в официальном коде, так что, вероятно, это не ошибка опечатки с моей стороны.
Таким образом, книга пытается научить концепции ручных переходов между двумя ViewControllers, первый из которых встроен в навигационный контроллер:
Раскадровка отображает панель навигации в редакторе ViewController так, как я хотел бы, чтобы она отображалась в конечном виде - с правкой в качестве заголовка и кнопкой возврата, а не кнопкой отмены.
В Selfie ViewController есть действие, связанное с распознавателем жестов касания, которое, в свою очередь, вызывает функцию, которая в конечном итоге выполняет этот вызов:
self.performSegue(withIdentifier: "showEditing", sender: image)
, который работает, направляя меня к Edit ViewController.
Затем я программно добавляю готовую кнопку к правой стороне панели навигации, поскольку в раскадровке она существует только неявно.
//add in a done button
let addSelfieButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done));
self.navigationItem.rightBarButtonItem = addSelfieButton;
Проблема в том, что отображаемая на моем iPad (2018) панель навигации, которую я использую для тестирования, остается на панели навигации от Selfie ViewController, что означает, что она отображает «Отмена», заголовок «Selfie!» и он игнорирует мой код, чтобы добавить кнопку «Готово». Я отладил, и код для кнопки определенно вызывается. Добавление панели навигации вручную ничего не изменило, обновленная панель навигации просто не отображается.
Я не могу проверить это в симуляторе (так как он использует Vision / Core ML), и мой IPhone в настоящее время заблокирован для тестирования управлением устройством, поэтому у меня есть только IPad для тестирования.
Спасибо за любую помощь!