从另一个类移动ViewController类的屏幕转换

时间:2018-01-16 06:35:37

标签: ios swift xcode swift4 xcode9

我和标题有完全相同的问题
请参阅下面的代码 每个代码都列在一个单独的文件中
我在ViewController类中编写了一个用于屏幕转换的方法(如func goToSecondView()) 然后我们决定在另一个文件(FirstFile)中的“iconATapped”方法中创建一个实例,并进行ViewController的屏幕转换。

但是,它没有成功并发出以下错误

let next = storyboard!.instantiateViewController(withIdentifier: "secondView")
//Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value


调用Action方法时,此错误有效
请告诉我解决这个问题的方法。

//FirstFile

import UIKit

class goNextPage: UIView {

    @IBAction func iconATapped(_ sender: Any) {
        ViewController.goToSecondView()
    }

}


//SecondFile

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func goToSecondView(){
        let next = storyboard!.instantiateViewController(withIdentifier: "secondView")
        self.present(next,animated: true, completion: nil)
    }
}

1 个答案:

答案 0 :(得分:0)

您正在使用ViewController.goToSecondView()并在goToSecondView中使用自己

self.present(next,animated: true, completion: nil)

这里你的自己将是零,因为你没有使用ViewController的变量,而是它的类名。所以没有ViewController的实例,因此导致nil。

尝试在第一个文件中创建ViewController的变量,然后尝试展示新的Vc。希望这有帮助!