通过导航控制器推送 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 时的奇怪行为

使用 Storyboard 时不通过 Storyboard 推送 ViewController

推送在导航控制器(故事板)中不起作用

iOS Swift 从推送通知以编程方式导航到某些 ViewController