在xib视图文件之间导航



我正在处理一个项目,该项目没有故事板,它只是有一个视图作为xib文件,有自己的类,问题是:我如何在这些xib视图之间导航?或者可以将它们嵌入导航控制器中吗?

我尝试了这个代码,但什么都没发生?

let NC = UINavigationController()
@IBAction func showUserProfile(_ sender: Any) {

print("show Profile")
let vc = UserProfile(
nibName: "UserProfile",
bundle: nil)
NC.pushViewController(vc,
animated: true )
}

这是应用内代理

let mainView = BlockListViewController(nibName: "BlockListViewController", bundle: nil)
window?.addSubview(mainView)
let navigationControll = UINavigationController(rootViewController: mainView)
self.window?.rootViewController = navigationControll
self.window?.makeKeyAndVisible()

当事件发生时,我尝试使用这个进行导航

self.navigationController?.pushViewController(UserProfile(), animated: true)

您无法在UIView的实例之间导航

根据苹果UINavigationController

一个容器视图控制器,用于定义用于导航分层内容的基于堆栈的方案。

导航控制器是一个容器视图控制器,用于管理一个或多个子视图控制器

所以基本上是UIViewController的堆栈,定义为[UIViewController]

在文档中阅读更多信息

您可以将每个UIView添加到UIViewController中,然后简单地浏览它。

根据您的评论,您可以将它们预定义到VC实例中,并使用您的首字母创建UINavigationController,然后简单地从UINavigationController推送到所需的UIViewController

评论更新

正如我从你在主视图中的评论中得到的那样,你已经定义了UINavigationController,只是简单地替换了NC.pushViewController(vc,animated: true )self.navigationController.pushViewController(vc, animated: true )

问题是你正在创建新的UINavigationController,而你已经有了第一个嵌入式

评论更新:如果您使用iOS 13+和场景代理,请在willConnectTo中使用此

guard let scene = (scene as? UIWindowScene) else { return }
// Instantiate UIWindow with scene
let window = UIWindow(windowScene: scene)
// Assign window to SceneDelegate window property
self.window = window
// Set initial view controller from Main storyboard as root view controller of UIWindow
let mainView = BlockListViewController(nibName: "BlockListViewController", bundle: nil)
let navigationControll = UINavigationController(rootViewController: mainView)
self.window?.rootViewController = navigationControll
// Present window to screen
self.window?.makeKeyAndVisible()

并呼叫self.navigationController.push

像这个

@IBAction func didTap(_ sender: UIButton)  {
let secondView = secondVC(nibName: "secondVC", bundle: nil)
self.navigationController?.pushViewController(secondView, animated: true)
}

相关内容

  • 没有找到相关文章