Как я могу использовать кнопку навигации назад в viewcontroller? - PullRequest
0 голосов
/ 13 июля 2020

Всем привет :) Я новичок в разработке iOS и не знаю, как сделать что-то одно. У меня есть такой viewcontroller, который связан с контроллером панели вкладок:

введите описание изображения здесь

как видите, это не TableViewController, а обычный контроллер представления с таблицей. В таблице у меня есть несколько ячеек, и мне нужно будет открыть другое представление с помощью кнопки «Назад», когда я нажму на определенную ячейку. Например, в android я использовал диалоговый фрагмент с панелью инструментов, в которую была помещена кнопка «Назад», но, как я вижу, в ios у нас нет ничего подобного. Я также слышал о контроллере навигации, но думаю, что в такой ситуации мне это не поможет :( У меня есть такая функция выбора для этой таблицы в этом контроллере представления:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        switch indexPath.section {
        case 0:
            print("1")
        case 1:
            print("1")
        case 2:
            print("2")
            // I need to add it here
            
        case 3:
            print("3")
        default: break
            
        }
    }

Так что, возможно, ios имеет некоторые возможность добавить панель инструментов в viewcontroller с помощью кнопки возврата без навигационного контроллера? Я вижу, что могу добавить этот элемент в свой viewcontroller, но я не могу добавить кнопку, и поскольку я вижу, что моя панель инструментов перекрывает системную панель: (

Ответы [ 2 ]

1 голос
/ 13 июля 2020

По сути, у вас есть два варианта для достижения этого:

1.1 Замените свой MoreViewController на NavigationController, затем вставьте свой viewController (V C с табличным представлением внутри) в navigationController.

Иерархия будет следующей: TabBar -> NavigationController -> More

1.2. Вставьте TabBarController в navigationController. Сложнее запустить шаг навигации, но он дает другой эффект: the detail viewController fully overlaps the tabBar. Это потому, что он полностью перекрывает NavigationController, а TabBar находится внутри NavigationController. Для версии 1.1 подробное представление не перекрывает tabBar.

Иерархия будет: NavigationController -> TabBar -> More

Вставьте подробное представление в navigationController. По умолчанию он будет отображать navigationBar без backButton, потому что ваш detailView - это root ViewController для NavigationController. Вы можете принудительно отобразить backButton, как в: Кнопка «Назад» отображается на root контроллере просмотра
  • Какой метод использовать? Это зависит от того, что вы показываете, UX. Как видите, в приложении Facebook иногда вы видите, что viewController отображается снизу вверх, иногда вы видите, что viewController отображается справа налево. Это не случайный выбор.

  • Еще одна вещь, для перекрытия строки состояния системы, вы должны использовать руководство по безопасному расположению вместо верхнего, как в: https://medium.com/@hassanahmedkhan / игра-это-безопасная-с-безопасной-зоной-руководство-макет-b3f09bdc71fe

1 голос
/ 13 июля 2020

Так, может быть, ios имеет некоторую возможность добавить панель инструментов к контроллеру просмотра с помощью кнопки возврата без навигационного контроллера?

Нет. Либо вы используете UINavigationController, либо вручную добавляете кнопку (UIButton или UIBarButtonItem).

Первый из них автоматически добавляет кнопку возврата в ваш navigationController's navigationBar .

Последнему понадобится селектор, в котором вы укажете, как вы хотите go вернуться к предыдущему экрану.

Пожалуйста, также знайте разницу между нажатием / показом и представление viewControllers.

Push/Show --- Pop.

Present --- Dismiss.

Я предлагаю go через основы навигации в iOS. Возможно начать отсюда: https://www.raywenderlich.com/4284-your-second-swift-4-ios-11-app/lessons/22

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...