ios - 如何在我当前的 UIViewController 之上呈现一个 UIViewController?

标签 ios swift uiviewcontroller

我正在以编程方式执行所有操作。不使用 Storyboard。

我的屏幕底部有一个导航栏(类似于标签栏,但是是定制的),有 5 个选项。单击每个导航选项时,我想呈现一个不同的 View Controller 。但是,我不希望显示的 View Controller 覆盖底部的导航栏。

例如:我有一个可以按下的设置按钮。我还有一个 SettingsViewController 文件。当用户点击“设置”按钮时,我会这样做

let settingsViewController = SettingsViewController()
settingsViewController.modalPresentationStyle = .OverCurrentContext
self.presentViewController(SettingsViewController(), animated: false, completion: nil)

但这会以新 View 覆盖我的整个屏幕。当我将这个新 View 的颜色更改为 UIColor.clearColor() 时,我仍然可以在底部看到我的导航栏,但我无法与其交互(新 View 位于它的顶部)。

我试图通过放置更改我的 SettingsViewController View 的框架,使其不会覆盖整个屏幕

self.view.frame = CGRectMake(0,0,width,height-100)

在我的 SettingsViewController 中的 viewDidLoad() 中。但是 View 仍然覆盖整个屏幕!

我希望我的 SettingsViewController 仅从屏幕的 [top to 100px from bottom] 区域显示。我希望我的导航栏保留在屏幕底部 100px 的位置。我该怎么做?

最佳答案

想通了:)

当我需要做的只是将 SettingsViewController 中的 View 添加为 subview 时,我试图展示我的新 SettingsViewController。

解决的办法是

self.view.addSubview(settingsViewController.view)

关于ios - 如何在我当前的 UIViewController 之上呈现一个 UIViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416202/

相关文章:

swift - 如何在 Swift 中显示来自另一个类的警报?

ios - 如何通过引用在 View Controller 之间传递数组对象

ios - -[NSManagedObjectContext 保存 :] 中的数组索引越界问题 (NSRangeException)

ios - 无法检查我的变量是否为零 SWIFT

ios - 使用 Swift 进行卡片查看

ios - 将当前正在运行的 SCNAction 应用于另一个 SCNNode

ios - iOS 应用程序警报和通知中的表情符号 - Xcode/Swift

ios - 如何持久化我的 View Controller

ios:<错误>:CGAffineTransformInvert:奇异矩阵

iphone - 优化 iPhone 性能