Добавить кнопку «Назад» на панель навигации после перехода из SKScene.IOS

Программируем под IOS
Ответить
Anonymous
 Добавить кнопку «Назад» на панель навигации после перехода из SKScene.

Сообщение Anonymous »


У меня есть GameViewController, который переходит в NavigationController, а затем в SettingsViewController. Все работает так, как ожидалось.

Я хочу добавить кнопку < Готово или < Назад в левой части панели навигации, чтобы вернуться к GameViewController однажды закончив. Как это сделать программно?

Пользовательский интерфейс полностью создан программно, поскольку большая его часть основана на SpriteKit. В Interface Builder по сути нет ничего, кроме пустых контроллеров.

В GameViewController установите значение, чтобы к нему можно было получить доступ позже:

класс GameViewController: UIViewController { переопределить функцию viewDidLoad() { супер.viewDidLoad() ... Scene.viewController = сам ... } } Затем в GameScene GameViewController извлеките и выполните переход:

класс GameScene: SKScene { слабый вар viewController: UIViewController? ... // Выполняем переход при касании SKSpriteNode `viewController?.performSegue(withIdentifier: "GoToSettingsSegue", отправитель: viewController)` } Наконец, в SettingsViewController программно создайте пользовательский интерфейс и добавьте заголовок:

класс SettingsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { переопределить функцию viewDidLoad() { супер.viewDidLoad() настроить() заголовок = "Настройки" ... } } Основываясь на некоторых исследованиях, я знаю, что элемент навигации «Назад/Готово» принадлежит предыдущему UIViewController, а не текущему. Итак, в моем случае его нужно было добавить в GameViewController, а не в SettingsViewController, верно?

Некоторые другие исследования также подняли вопрос об удалении представлений из стека, чтобы он не слишком сильно замедлялся, если вы перемещаетесь туда и обратно несколько раз.

Как мне добавить это программно в GameViewController и/или GameScene и настроить действие/цель так, чтобы оно в основном переходило обратно от SettingsViewController к < code>GameViewController? Я новичок в разработке для iOS, поэтому не совсем уверен.

Изменить:

В SettingsViewController я могу добавить всего одну строку и получить кнопку Готово, которая сейчас ничего не делает. Но я бы предпочел использовать встроенную функциональность < Back NavigationController, которую я просто не могу понять, как добавить.
класс SettingsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { переопределить функцию viewDidLoad() { супер.viewDidLoad() настроить() заголовок = "Настройки" self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneWithSettings)) ... } } @objc func DoneWithSettings() { // Сделай что-нибудь }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»