繁体   English   中英

将值传递给模态UIViewController-Swift

[英]passing values to a Modal UIViewController - Swift

我在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 如果带有标签,则将其nameLabelnameLabel以使外部读者可以阅读并理解该代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM