Кажется, у вас несколько проблем.
- Вы пытаетесь превратить sh a
UIViewController
в не представленный UINavigationController
- Вы создаете экземпляр из
UIStoryboard
с неправильным идентификатором
Сначала вам нужно выбрать правильный UIStoryboard
, который, как я предполагаю, это main , затем вы должны представить UINavigationController
из держатель UIViewController
или пытается получить sh от этого UIViewController
, если он имеет UINavigationController
,
Часть 1: Исправление экземпляров,
let storyboard = UIStoryboard.init(name: "main", bundle: Bundle())
let vc = storyboard.instantiateViewController(withIdentifier: "VC") as! ViewController
let navigationController = UINavigationController(rootViewController: vc)
Теперь у вас есть a navigationController
, который содержит ваш VC
Часть 2: вы хотите представить эту навигацию из вашего холдинга VC
, вы можете либо добавить слушателя к UIButton
из этого VC
и представить / pu sh оттуда
, так что давайте обернем это и создадим функцию в вашем VC
, которая содержит UIView
@objc func pushToMyVc() {
let storyboard = UIStoryboard.init(name: "main", bundle: Bundle())
let vc = storyboard.instantiateViewController(withIdentifier: "VC") as! ViewController
let navigationController = UINavigationController(rootViewController: vc)
}
И в вашем UIView
добавьте эту переменную var selector: (() -> Void)?
Теперь в @IBAction func buttonPressed
вызовите эту функцию selector?()
Теперь все, что нам нужно, это передать, какую функцию я хочу использовать, когда эта кнопка получит в нашем случае щелкнул функцию pushToMyVC
, которую мы поместили в наш основной UIViewController
, поэтому в нашем didLoad
или где бы вы ни вызывали это настраиваемое представление
установите селектор следующим образом
myView.selector = pushtoMyVC
Боковое примечание: вы не можете представить / pu sh UIViewController
из не UIViewController
классов