我在UICollectionView中有一个用户配置文件列表,当我点击其中一个用户时,我有一个说法是Modally显示用户配置文件,但是我似乎无法将值从一个View传递给另一个View。例如:图像数据,用户名等
在我的UICollectionViewController上,我有以下内容:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showSelectedUserProfile" {
let cell = sender as! GrafterCell
let SP = segue.destinationViewController as! SelectedProfileViewController
let indexPath = self.collectionView?.indexPathForCell(cell)
var username = allUsernames[indexPath!.row]
SP.username.text = username
}
}
cell
是集合视图中的单元格,如果目标视图控制器是SP,则为SP
当我运行脚本时,出现以下错误
fatal error: unexpectedly found nil while unwrapping an Optional value
它显示SP.username
为nil,我不知道为什么它为nil,因为它已连接到Class并被调用username
class SelectedProfileViewController: UIViewController {
@IBOutlet weak var btnHideSelectedProfileViewController: UIButton!
@IBOutlet weak var userProfilePicture: UIImageView!
@IBOutlet weak var username: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
self.navigationController?.navigationBarHidden = true
}
@IBAction func btnHideSelectedProfileViewControllerClicked(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
您有一个带有属性的对象数组,该属性username
带有属性text
。从中我可以得出结论,您可能正在存储username
属性为UILabel
?的对象数组。
这将是非常糟糕的设计。您的数据数组应该只包含数据对象,而不是UI元素。切勿使用UI元素的内容来存储和检索数据(这似乎是您正在做的事情)。UI元素应仅用于显示数据。
您需要为目标控制器提供一个类型的属性,String
以保存用户名信息。
另外,请勿称呼具有username
误导性的标签。如果带有标签,则nameLabel
对其进行调用,以使外部读者可以阅读并理解该代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句