Для создания подобной структуры интерфейса, где одно view controller является дочерним для другого, необходимо использовать контроллеры контейнеров.
В данном случае, вам потребуется использовать контейнеры UINavigationController и UIViewController для создания структуры, как на скриншоте.
1. Создайте основной UIViewController, который будет содержать контейнеры для вложенных view controller'ов. К этому контроллеру вы можете применить UINavigationController, чтобы иметь возможность отображать заголовок и кнопки навигации на верхней панели.
class MainViewController: UIViewController { // IBOutlet для контейнера, в который будем добавлять вложенные view controller'ы @IBOutlet weak var containerViewController: UIView! override func viewDidLoad() { super.viewDidLoad() // Создание и добавление первого вложенного view controller'а let childVC1 = ChildViewController1() addChild(childVC1) containerViewController.addSubview(childVC1.view) childVC1.view.frame = containerViewController.bounds childVC1.didMove(toParent: self) } // Метод для переключения между вложенными view controller'ами func switchChildViewController() { // Удаление текущего дочернего view controller'а let currentChildVC = children.first currentChildVC?.willMove(toParent: nil) currentChildVC?.view.removeFromSuperview() currentChildVC?.removeFromParent() // Добавление нового дочернего view controller'а let childVC2 = ChildViewController2() addChild(childVC2) containerViewController.addSubview(childVC2.view) childVC2.view.frame = containerViewController.bounds childVC2.didMove(toParent: self) } }
2. Создайте два дочерних view controller'а, которые будут отображаться внутри контейнера.
class ChildViewController1: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Настройка интерфейса для первого дочернего view controller'а } } class ChildViewController2: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Настройка интерфейса для второго дочернего view controller'а } }
3. Создайте сторибоард и добавьте в него MainViewController с соответствующими IBOutlet'ами и IBAction'ами. Подключите контейнер view к IBOutlet, чтобы иметь возможность добавлять вложенные view controller'ы.
4. Для переключения между дочерними view controller'ами можно использовать IBAction для кнопки, например:
@IBAction func switchChildViewControllerButtonPressed(_ sender: UIButton) { switchChildViewController() }
Таким образом, вы можете создать иерархию с вложенными view controller'ами, что позволит вам создавать и управлять подобными интерфейсами в iOS.