2017-06-08 3 views
0

Ich bin derzeit lernen, schnell und ich versuche, von Instanziierung von Storyboard funktioniert zu lernen, aber der Fehler, mit dem ich jetzt konfrontiert bin, ist nicht sehr dokumentiert.Get Attribut von Viewcontroller erstellt mit Storyboard

ich ein Viewcontroller in meinem Haupt-Storyboard erstellt und ich angegeben es Typ als benutzerdefinierte Klasse I SimpleNewsViewController zuvor genannt, hier der Code meiner Klasse ist, is'nt es kompliziert:

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() 
} 

}

auf meinem Haupt-Storyboard ist hier die benutzerdefinierte Viewcontroller I angegeben: My Storyboard implementation

Hier liegt das Problem: In meinem Code ich instanziieren meine Viewcontroller dank der instanciateViewController (Kennung: „NewsView“) und dann versuche ich, wie meine drei Attribute zu setzen in diesem Stück Code:

... 
    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) 
... 

Wenn ich un - Ich erwähne die drei Zeilen. Ich habe einen Fehler, der besagt, dass er beim Entpacken eines optionalen Werts null gefunden hat. Die IDE zeigt auch den Fehlercode und den Faden (wenn das helfen kann): The error

Antwort

2

Gleich nach den Controller instanziieren die Ausgänge noch nicht angeschlossen sind, müssen Sie temporäre Variablen deklarieren und die Austritts Eigenschaften in viewDidLoad()

gesetzt
... 
    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 
} 
Verwandte Themen