如何在不使用 NavigationController 的情况下从一个视图导航到另一个视图?
Posted
技术标签:
【中文标题】如何在不使用 NavigationController 的情况下从一个视图导航到另一个视图?【英文标题】:How navigate from one view to another without using NavigationController? 【发布时间】:2017-01-16 04:04:24 【问题描述】:我想在从 UIViewController 登录后调用 UITabBarController
我使用 pushViewController 但它不起作用。 这是我的代码
let dashboarController = DashboardTabBarController()
self.navigationController?.pushViewController(dashboarController, animated: false)
self.dismiss(animated: true, completion: nil)
这是我在 DashboardController 中的代码
DashboardTabBarController: UITabBarController, UITabBarControllerDelegate
override func viewDidLoad()
super.viewDidLoad()
self.delegate = self
self.view.backgroundColor = UIColor.white
print("test")
// Do any additional setup after loading the view.
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
let tabOne = MerchantTableViewController()
let tabOneBarItem = UITabBarItem(title: "Merchant", image: UIImage(named: "icon_merchant"), selectedImage: UIImage(named: "icon_merchant"))
tabOne.tabBarItem = tabOneBarItem
let tabTwo = RewardsViewController()
let tabTwoBarItem2 = UITabBarItem(title: "Rewards", image: UIImage(named: "icon_reward"), selectedImage: UIImage(named: "icon_reward"))
tabTwo.tabBarItem = tabTwoBarItem2
let tabThree = ViewController()
let tabTwoBarItem3 = UITabBarItem(title: "Promos", image: UIImage(named: "icon_promos"), selectedImage: UIImage(named: "icon_promos"))
tabThree.tabBarItem = tabTwoBarItem3
let tabFour = MerchantTableViewController()
let tabTwoBarItem4 = UITabBarItem(title: "Transactions", image: UIImage(named: "icon_card"), selectedImage: UIImage(named: "icon_card"))
tabFour.tabBarItem = tabTwoBarItem4
let tabFive = ProfileViewController()
let tabTwoBarItem5 = UITabBarItem(title: "Profile", image: UIImage(named: "icon_profile"), selectedImage: UIImage(named: "icon_profile"))
tabFive.tabBarItem = tabTwoBarItem5
self.viewControllers = [tabOne, tabTwo, tabThree, tabFour, tabFive]
我是 ios 开发的新手。谢谢
【问题讨论】:
【参考方案1】:Apple doc says : 导航控制器对象使用导航堆栈管理当前显示的屏幕,该堆栈由视图控制器数组表示。数组中的第一个视图控制器是 根视图控制器。数组中的最后一个视图控制器是当前正在显示的视图控制器。您可以使用 segue 或使用此类的方法从堆栈中添加和删除视图控制器。
所以现在,如果您不想使用UINavigationController
并添加UIViewController
,请按照以下方法:
-
Present ViewController
Add as a Child VC
【讨论】:
【参考方案2】: 您应该让您从中导航的视图控制器在导航中。如果不是,则创建一个具有根的导航视图控制器对象,将源视图控制器作为根视图控制器。如果你不想使用导航控制器,那么你可以使用 PresentViewController 方法来呈现视图控制器。
【讨论】:
以上是关于如何在不使用 NavigationController 的情况下从一个视图导航到另一个视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 AudioQueueRef 的情况下在 AudioQueue 中设置音量?
Swift - 使用导航栏和标签栏获取 viewController 的大小