Добавить кнопку «Назад» на панель навигации после перехода из SKScene. ⇐ IOS
Добавить кнопку «Назад» на панель навигации после перехода из SKScene.
У меня есть 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() { // Сделай что-нибудь }
У меня есть 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() { // Сделай что-нибудь }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Задержка между SKAction и SKAudioNode, когда SKScene приостанавливается и возобновляется.
Anonymous » » в форуме IOS - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-