获取用storyboard创build的viewcontroller的属性

我目前正在快速学习,并且正在尝试从故事板作品中学习实例,但是现在我面对的错误并没有太多logging。

我在我的主要故事板中创build了一个viewcontroller,我将它指定为一个我以前称为SimpleNewsViewController的自定义类,这里是我的类的代码,它并不复杂:

class SimpleNewsViewController: UIViewController { @IBOutlet weak var myImage: UIImageView! @IBOutlet weak var myLabel: UILabel! @IBOutlet weak var myText: UITextView! var event: Events! override func viewDidLoad() { super.viewDidLoad() } 

}

在我的主要故事板上是我指定的自定义ViewController: 我的故事板实现

现在,这里的问题是:在我的代码我instanciate我的ViewController得益于instanciateViewController(标识符:“NewsView”),然后我尝试设置我的3个属性,如在这段代码:

 ... let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "NewsView") as! SimpleNewsViewController //controller.myImage.image = UIImage(named: "image.jpg") //controller.myText.text = "this is an example that can be really long" //controller.myTitle.text = "this is a title example self.navigationController?.pushViewController(controller, animated: true) ... 

如果我取消注释三行,我有一个错误,说它发现零,同时展开一个可选的值。 IDE还显示错误代码和线程(如果可以的话): 错误

在实例化控制器之后,sockets还没有连接,你必须声明临时variables并在viewDidLoad()设置sockets属性

 ... let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "NewsView") as! SimpleNewsViewController controller.tempImage = UIImage(named: "image.jpg") controller.tempLabel = "this is an example that can be really long" controller.tempText = "this is a title example self.navigationController?.pushViewController(controller, animated: true) ... 

 class SimpleNewsViewController: UIViewController { @IBOutlet weak var myImage: UIImageView! @IBOutlet weak var myLabel: UILabel! @IBOutlet weak var myText: UITextView! var tempImage : UIImage? var tempLabel = "" var tempText = "" var event: Events! override func viewDidLoad() { super.viewDidLoad() myImage.image = tempImage myLabel.text = tempLabel tempText.text = tempText }