通过导航控制器推送 Viewcontroller,显示黑屏
Posted
技术标签:
【中文标题】通过导航控制器推送 Viewcontroller,显示黑屏【英文标题】:Pushing Viewcontroller through navigation controller , Showing Black screen 【发布时间】:2016-08-23 12:41:17 【问题描述】:我在堆栈溢出中搜索这个问题,但无法得到这个问题的确切答案,我被困了很长时间。 我的问题是我试图通过导航控制器推送一个 TestViewController。当我单击按钮时,TestViewController 正在加载导航栏,并且 UIScreen 为黑色。
TestViewController的代码
import UIKit
class TestViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
override func viewWillAppear(animated: Bool)
super.viewWillAppear(true)
navigationItem.title = "Test page"
按钮代码
@IBAction func secondButtonClicked(sender: AnyObject)
buttonPressedNumber = "Two Clicked"
buttonTextColor = UIColor.magentaColor()
let a = TestViewController()
let b:UIViewController = a as UIViewController
navigationController?.pushViewController(b, animated: false)
【问题讨论】:
你的 TestViewController 有 Xib 吗? 是的@MohammedShakeer 那么同样的问题@MuhammadAdnan Swift - programmatically navigate to another view controller/scene的可能重复 你在使用故事板吗? 【参考方案1】:let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let resultViewController = storyBoard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
self.navigationController?.pushViewController(resultViewController, animated: true)
【讨论】:
【参考方案2】:您尚未设置视图的背景颜色。
UIWindow 的默认颜色是黑色。因此,如果您没有在堆栈中设置任何其他背景颜色,它们都将是透明的。
没有为 UIViewController 的视图设置合适的背景颜色也会在转换过程中导致奇怪的视觉效果。
【讨论】:
【参考方案3】:let nextVC = self.storyboard?.instantiateViewControllerWithIdentifier("storyboardID") as! viewController
self.navigationController?.pushViewController(nextVC, animated: true)
【讨论】:
【参考方案4】:现在不确定背景颜色是否设置为白色。 因此,如果视图控制器是以编程方式创建的
在 viewDidLoad/viewWillAppear 中为白色背景色
view.backgroundColor = UIColor.whiteColor()
【讨论】:
以上是关于通过导航控制器推送 Viewcontroller,显示黑屏的主要内容,如果未能解决你的问题,请参考以下文章
通过 UIScrollView 推送 ViewController
iOS:通过委托方法从推送的 ViewController 返回?
从嵌入式导航控制器推送 viewController 时的奇怪行为