storyboard页面跳转到代码页面,UINavigationController在代码页面没有成功显示

问题

  1. storyboard跳转到代码界面,UINavigationController在storyboard界面显示,代码界面不显示

代码

我是在AppDelegate里增加UINavigationController

//AppDelegate.swift
let storyboard = UIStoryboard(name:"Main",bundle:nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
//let viewController = LoginViewController()
let nav = UINavigationController(rootViewController: viewController)
self.window?.rootViewController = viewController
self.window?.addSubview(nav.view)
self.window?.makeKeyAndVisible()

//统一导航条样式
let textAttributes = [NSFontAttributeName: UIFont.systemFont(ofSize: 19.0), NSForegroundColorAttributeName: UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor.red

在storyboard界面通过该方式跳转

//LoginViewController.swift
let chatListView = SingleChatListViewController()
self.present(chatListView, animated: true, completion: nil)

结果

图片描述

这个首页是正常的

图片描述

这个就不对了

阅读 5.4k
2 个回答

self.present(chatListView, animated: true, completion: nil)
替换成
self.navigationController?.pushViewController(chatListView , animated: true)
就ok了
你是用present显示出来的,跟nav显示的页面不在一个逻辑的话可以使用这种方式

虽然没用过swift,但是你api貌似用错了

//在storyboard界面通过该方式跳转
//LoginViewController.swift
let chatListView = SingleChatListViewController()
self.present(chatListView, animated: true, completion: nil)

self.navigationViewController 的是用push跳转的,你的present是另外一种跳转方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题