Ios 从另一个类移动ViewController类的屏幕转换
我的问题与标题完全相同。Ios 从另一个类移动ViewController类的屏幕转换,ios,swift,xcode,swift4,xcode9,Ios,Swift,Xcode,Swift4,Xcode9,我的问题与标题完全相同。 请参阅下面的代码。 每个代码都列在单独的文件中。 我在ViewController类中编写了一个屏幕转换方法(如func goToSecondView())。 然后,我们决定在另一个文件(FirstFile)中的“iconATapped”方法中创建一个实例,并对ViewController进行屏幕转换。 但是,它没有成功,并发出以下错误。 调用操作方法时,此错误有效。 请告诉我解决这个问题的方法。 您使用的是ViewController.goToSecon
请参阅下面的代码。
每个代码都列在单独的文件中。
我在ViewController类中编写了一个屏幕转换方法(如func goToSecondView())。
然后,我们决定在另一个文件(FirstFile)中的“iconATapped”方法中创建一个实例,并对ViewController进行屏幕转换。
但是,它没有成功,并发出以下错误。
调用操作方法时,此错误有效。
请告诉我解决这个问题的方法。
您使用的是ViewController.goToSecondView(),在goToSecondView中使用的是self
self.present(next,animated: true, completion: nil)
在这里,您的self将为零,因为您使用的不是ViewController的变量,而是它的类名。因此,没有ViewController的实例,因此导致nil
尝试在第一个文件中创建ViewController变量,然后尝试演示新的Vc。希望这有帮助 你到底想做什么?为什么把
goToSecondView
放在另一个视图控制器中?将其放在第一个文件中有什么问题?您的序列图像板
变量为零,或者您的序列图像板中没有名为secondView
的标识符。请添加序列图像板变量初始化代码。
//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)
}
}
self.present(next,animated: true, completion: nil)