ios - 用 NavigationViewController swift 呈现 ViewController

标签 ios swift uinavigationcontroller uinavigationbar viewcontroller

我有系统“NavigationViewController -> MyViewController”,我想以编程方式在第三个 View Controller 中呈现 MyViewController。问题是我在 MyViewController 中没有导航栏。你能帮助我吗?

var VC1 = self.storyboard.instantiateViewControllerWithIdentifier("MyViewController") as ViewController
self.presentViewController(VC1, animated:true, completion: nil)

最佳答案

调用 presentViewController 在现有导航堆栈之外 模态 呈现 View Controller ;它不包含在您的 UINavigationController 或任何其他内容中。如果你想让你的新 View Controller 有一个导航栏,你有两个主要选择:

选项 1. 将新的 View Controller 推送到您现有的导航堆栈上,而不是以模态方式呈现它:

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
self.navigationController!.pushViewController(VC1, animated: true)

选项 2。将新的 View Controller 嵌入到新的导航 Controller 中并以模态方式呈现新的导航 Controller :

let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
let navController = UINavigationController(rootViewController: VC1) // Creating a navigation controller with VC1 at the root of the navigation stack.
self.present(navController, animated:true, completion: nil)

请记住,此选项不会自动包含“后退”按钮。您必须自己建立一个封闭的机制。

哪一个最适合您是一个人机界面设计问题,但通常很清楚什么最有意义。

关于ios - 用 NavigationViewController swift 呈现 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25444213/

相关文章:

ios - 关闭模态,然后立即推送 View Controller

ios - 在IOS中的第二类中调用方法

swift - 与 NavigationControllerDelegate 的冗余一致性

ios - 如何使用 RESideMenu 或 REFrostedViewController 跳转到所需的 UIViewController

ios - 使用 Cocoapods 更新后找不到 Parse/Parse.h 文件

ios - Stripe 框架始终为卡片品牌返回 @1x 图像

ios - 将 CKRecordID 保存到 CloudKit

ios - Concat 运算符 RxSwift

ios - 没有 reuseIdentifier 的 UITableViewCell

ios - 如何在 TabBarController 中重置 UIViewController