Я игнорирую раскадровку и создаю UINavigationController
в AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
window?.rootViewController = UINavigationController(rootViewController: HomeController(collectionViewLayout: layout))//make the ViewController class to be the root
return true
}
У меня есть leftBarButton
, который переключается на другой UINavigationController
или UICollectionViewController
(по вашему совету)
override func viewDidLoad() {
super.viewDidLoad()
let parentMenuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 34, height: 34))
parentMenuButton.addTarget(self, action: #selector(self.menuButtonOnClicked), for: .touchUpInside)
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: parentMenuButton)
}
@objc func menuButtonOnClicked(){
print("menuButtonOnClicked button is pressed")
}
Как мне достичь этого программно? (Переключить другую область навигации нажатием кнопки меню)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
self.navigationController!.pushViewController(secondViewController, animated: true)
Ошибка:
Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Storyboard () не содержит контроллера представления с идентификатором« SecondViewController »
Я создаю SecondViewController:
import UIKit
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
Есть ли способ сделать это, не связываясь с раскадровкой? (Только программно)