在prepareForSegue中设置destinationviewcontroller的标签文本抛出错误:意想不到地发现零时,解包可选值

我相信string不是零,标签存在,我试图找出为什么标签中的文字是零。 destinationViewController的其他成员正在设置正确,但只要我添加行来设置标签程序崩溃。

// Mark segue override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { // Get reference to the destination view controller var detailVC = segue.destinationViewController as! DetailViewController var detailImages: Array<UIImage> = [] detailImages.append(UIImage(named: "pup.jpg")!) detailImages.append(UIImage(named: "dog.png")!) // Set the property to the selected location so when the view for // detail view controller loads, it can access that property to get the feeditem obj detailVC.selectedLocation = _selectedLocation; println(_str!) detailVC.myLabel.text = "hello" } 

这是因为myLabel的出口不会在prepareForSegue设置,所以它将是零。 请尝试下面的方法,

DetailViewController创build一个stringvar,

 var labelText: String? 

prepareForSegue

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { // Get reference to the destination view controller var detailVC = segue.destinationViewController as! DetailViewController var detailImages: Array<UIImage> = [] detailImages.append(UIImage(named: "pup.jpg")!) detailImages.append(UIImage(named: "dog.png")!) // Set the property to the selected location so when the view for // detail view controller loads, it can access that property to get the feeditem obj detailVC.selectedLocation = _selectedLocation; println(_str!) detailVC.labelText = "hello" } 

并在DetailViewController viewDidLoad

 override func viewDidLoad() { super.viewDidLoad() self.myLabel.text = labelText // Do any additional setup after loading the view. } 

是的,最后我把prepareForSegue的最后一行改成了

 detailVC.myString = _str as? String 

我不确定我是不是? 因为在我detailVC我补充说:

 var myString:String? 

在哪里将NSString转换为String的最佳位置,或者没关系? 谢谢!