рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдХреЗ рдмрд┐рдирд╛ рд╕реНрдкреНрд▓рд┐рдЯ рдХрдВрдЯреНрд░реЛрд▓рд░

рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ iPad рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ xib рдмрдирд╛рдпрд╛ред 2014 рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Apple рдиреЗ рдСрдЯреЛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдЖрдХрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ, рдФрд░ рдЕрдиреБрдХреВрд▓реА рдиреЗрд╡рд┐рдЧреЗрд╢рди UISplitViewController рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ ред



рд╕реНрдкреНрд▓рд┐рдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рджреЛ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрддрд╛ рд╣реИред рдмрд╛рдИрдВ рдУрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ (рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ) рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣реИред


рдЖрдЗрдП UISplitViewController рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ UISplitViewController рдФрд░ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ UISplitViewController ред


рдирд┐рдпрдВрддреНрд░рдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛


рдмрд╛рдПрдБ (рдиреЗрд╡рд┐рдЧреЗрд╢рди) рдФрд░ рджрд╛рдПрдБ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВред рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:


 class MasterController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = "Master" self.navigationController?.navigationBar.prefersLargeTitles = true } } class DetailController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = "Detail" self.navigationController?.navigationBar.prefersLargeTitles = true } } 

рдПрдХ рд╡рд┐рднрд╛рдЬрди рдирд┐рдпрдВрддреНрд░рдХ рджреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреИрдЯ рдХреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдмрд╛рдИрдВ рдУрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди-рдореБрдЦреНрдп рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдВ рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд░реВрдк рджрд╛рдИрдВ рдУрд░, рдпрд╛ рд╡рд┐рд╕реНрддреГрдд (рдбрд┐рдЯреЗрд▓ рдХрдВрдЯреНрд░реЛрд▓рд░)ред рдорд╛рд╕реНрдЯрд░ рдФрд░ рдбрд┐рдЯреЗрд▓ рдпрд╛рдж рд░рдЦреЗрдВ, рд╢рдмреНрдж рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдорд┐рд▓реЗрдВрдЧреЗред


рд╕реНрдкреНрд▓рд┐рдЯ рдЬреЛрдбрд╝реЗрдВ


рдЖрдЗрдП, AppDelegate рдкрд░ рдЬрд╛рдПрдВ, doFinishLaunchingWithOptions рдореЗрдердб рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдВ, рд╕реНрдкреНрд▓рд┐рдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рджреЛ рдЕрдиреНрдп рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рд╕реНрдкреНрд▓рд┐рдЯ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:


 let masterController = MasterController() let masterNavigationController = UINavigationController(rootViewController: masterController) let detailController = DetailController() let detailNavigationController = UINavigationController(rootViewController: detailController) let splitViewController = UISplitViewController() splitViewController.viewControllers = [masterNavigationController, detailNavigationController] self.window = UIWindow(frame: UIScreen.main.bounds) self.window!.rootViewController = splitViewController self.window!.makeKeyAndVisible() 

рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЪрд▓рд╛рдПрдВред рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдФрд░ рд▓реИрдВрдбрд╕реНрдХреЗрдк рдЭреБрдХрд╛рд╡ рдХреНрд░рдорд╢рдГ:



рдкреЛрд░реНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдореЗрдВ, рдорд╛рд╕реНрдЯрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд╛рдЗрдк рдХрд░реЗрдВред рдпрд╣ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЖрдЧреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред



рдорд╛рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдПрдХ рдорд╛рд╕реНрдЯрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдПрдХ UINavigationController рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдЯреЗрдмрд▓ рд╣реИред


рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реЗрд▓ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдХреЛрдб рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ
 class MasterController: UITableViewController { override func viewDidLoad() { self.tableView = UITableView(frame: .zero, style: .insetGrouped) super.viewDidLoad() self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "id") self.navigationItem.title = "Master" self.navigationController?.navigationBar.prefersLargeTitles = true } override func numberOfSections(in tableView: UITableView) -> Int { return 2 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 4 } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "id")! cell.textLabel?.text = "\(indexPath)" return cell } } 

рдФрд░ рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреИрд╕реЗ, рддреЛ рдпрд╣рд╛рдБ ред


IOS 13 рдореЗрдВ, рдПрдХ рдирдпрд╛ .insetGrouped рдЯреЗрдмрд▓ рд╕реНрдЯрд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ , рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рд╢реИрд▓реА Xcode 11 рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИред


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдПрдБ:



рд╕реЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рд╣рдо рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдирд┐рдпрдВрддреНрд░рдХ рджрд┐рдЦрд╛рдПрдВрдЧреЗред "рд╡рд┐рд╕реНрддреГрдд рдирд┐рдпрдВрддреНрд░рдХреЛрдВ" рдиреЗ рдЕрдлрд╡рд╛рд╣ рдХреЛ рдХреИрд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ , рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let controller = DetailController() controller.navigationTitle = "\(indexPath)" self.showDetailViewController(UINavigationController(rootViewController: controller), sender: nil) } 

рдирд╛рдордХрд░рдг рдорд╛рд╕реНрдЯрд░ / рд╡рд┐рд╕реНрддреГрдд рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВ? рдпрд╣рд╛рдБ showDetailViewController рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред


рдЪреМрдХрд╕ рдзреНрдпрд╛рди рджреЗрдЧрд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдкрд╛рд╕ рдиреЗрд╡рд┐рдЧреЗрд╢рдирдЯрд╛рдЗрдЯрд▓ рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░реЗрдВ:


 class DetailController: UIViewController { var navigationTitle: String = "Detail" override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = navigationTitle self.view.backgroundColor = .white } } 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдПрдБ рдФрд░ рд╕реЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



рдЖрдИрдлрд╝реЛрди


рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЕрдиреБрдХреВрд▓реА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рдЦреИрд░, рд▓рдЧрднрдЧред рдПрдХ iPhone рдЪреБрдиреЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:



рдПрдХ рдирд┐рдпрдорд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рди рдирд┐рдпрдВрддреНрд░рдХ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╣реИ рдЪрдВрдЪрд▓рддрд╛ рдЕрдиреБрдХреВрд▓рди рдХреНрд╖рдорддрд╛ - рдореБрдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдкреНрд▓рд┐рдЯ рдирд┐рдпрдВрддреНрд░рдХ рдореБрдЦреНрдп рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдирд┐рдпрдВрддреНрд░рдХ рд░рдЦрддрд╛ рд╣реИред


рдорд╛рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди iPhone рдкрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреЛ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдХреНрд░рдордг рдХреЛ UISplitViewControllerDelegate рдкреНрд░рддрд┐рдирд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рдкрд╕реА рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдорд╛рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ, рдпрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдЦрд╛рдирд╛ рд╣реИ:


 extension AppDelegate: UISplitViewControllerDelegate { func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool { return true } } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг: рдЬрдм рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реЗ рд╡рд┐рд╡рд░рдг рдирд┐рдпрдВрддреНрд░рдХ, рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред



IPhone рдХреЗ рд▓рд┐рдП рд▓реИрдВрдбрд╕реНрдХреЗрдк


рдЖрдИрдлрд╝реЛрди рдХреЗ рд▓рд┐рдП рд▓реИрдВрдбрд╕реНрдХреЗрдк рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкреНрд▓рд┐рдЯ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкреНрд▓рд┐рдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЛрдб рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 splitViewController.preferredDisplayMode = UISplitViewController.DisplayMode.allVisible 

рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рд╣рдо рдорд╛рд╕реНрдЯрд░-рдбрд┐рдЯреЗрд▓ рдЬреЛрдбрд╝реА рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХреНрд╖рдорддрд╛ рдПрдкреАрдЖрдИ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред


рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдореЗрдВ рднреА рдпрд╣реА рд░рд╣реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ (рдХреЗрд╡рд▓ рдПрдХреНрд╕ рдореИрдХреНрд╕ рдФрд░ 8+ рдХреЗ рд▓рд┐рдП):



рдпрджрд┐ рд╕реНрдкреНрд▓рд┐рдЯ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЗрдВ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдЧреАред


рдЖрдпрд╛рдо


рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 splitViewController.preferredPrimaryColumnWidthFraction = 0.5 splitViewController.maximumPrimaryColumnWidth = 2000 

рдорд╛рд╕реНрдЯрд░ рдФрд░ рдбрд┐рдЯреЗрд▓ рдПрдХ рд╣реА рд╕рд╛рдЗрдЬ рдХреЗ рд╣реЛрдВрдЧреЗред рдЕрдзрд┐рдХрддрдордкреНрд░рдорд╛рдг рдкрддреНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдиреНрдпреВрдирддрдо рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЖрдИрдкреИрдб рд╣реИрдВ)


рдЫрд┐рдкрдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рд╕реНрдЯрд░


рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЗрдВ рд╡рд┐рд╡рд░рдг рдЦреЛрд▓рддрд╛ рд╣реИред рд╕реНрдкреНрд▓рд┐рдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ .allV рдЕрджреГрд╢реНрдп рдореЛрдб рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдбрд┐рдЯреЗрд▓ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:


 if let splitController = self.splitViewController{ if let navController = splitController.viewControllers.last as? UINavigationController { navController.topViewController?.navigationItem.leftBarButtonItem = splitController.displayModeButtonItem } } 

рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдЬрд┐рдл рдПрдХ рдорд╛рд╕реНрдХреЛ рдмрдЬрдЯ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:



рдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ ред


рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢


AutoLayout рддрддреНрд╡реЛрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рд╕реНрдкреНрд▓рд┐рдЯ рдирд┐рдпрдВрддреНрд░рдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдкреНрдкрд▓ рдПрдХ рд╕реНрдерд┐рд░ рдорд╛рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ ред рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдпрд╛, рдПрдХ рд╕реЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдореИрдВрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ (рд╡рд┐рд╕реНрддрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп) рдХреЛ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИред


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рд╡рд┐рднрд╛рдЬрди рджреГрд╢реНрдп рдХреЗ рдПрдХ рддрд░рдл рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рд╡рд┐рднрд╛рдЬрди рджреГрд╢реНрдп рдХреЗ рджреЛрдиреЛрдВ рдкреИрди рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд░рдЦрдиреЗ рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдиреНрдореБрдЦ рд░рд╣рдиреЗ рдФрд░ рджреЛ рдкреИрди рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддреА рд╣реИред

рдорд╛рд╕реНрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдЪрдпрди рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдбрд┐рдЯреЗрд▓ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдорд╛рд╕реНрдЯрд░ рдкрд░ рдЪрдпрди рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рджрдВрдбред


рд╣рд░ рдЬрдЧрд╣ рд╕реНрдкреНрд▓рд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдордЬрдмреВрдд рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реИ, рдФрд░ рд░реВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЯреИрдм рдпрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реИ, рддреЛ рд╕реНрдкреНрд▓рд┐рдЯ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХрд▓-рд╕реНрдХреНрд░реАрди рдЕрдиреБрд╡рд╛рджрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдкреНрд▓рд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рд╕рд╛рдзрдХреЛрдВ рдХреЗ рд▓рд┐рдП


рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ, рджрд┐рд╢рд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
рдпрджрд┐ рдЖрдк рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦреЗрдВ:


Source: https://habr.com/ru/post/hi460965/


All Articles