将值传递给模态 UIViewController - Swift
Posted
技术标签:
【中文标题】将值传递给模态 UIViewController - Swift【英文标题】:passing values to a Modal UIViewController - Swift 【发布时间】:2015-04-19 22:17:28 【问题描述】:我在 UICollectionView 中有一个用户配置文件列表,当我点击其中一个用户时,我有一个模态显示用户配置文件的 segue,但是我似乎无法将值从一个视图传递到另一个视图。例如..图像数据、用户名等。
在我的 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 如果是目标视图控制器
运行脚本时出现以下错误
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)
【问题讨论】:
【参考方案1】:您有一个对象数组,其属性为username
,属性为text
。据我推测,您可能正在存储username
属性为UILabel
的对象数组?
这将是一个非常糟糕的设计。您的数据数组应该只有数据对象,而不是 UI 元素。永远不要使用 UI 元素的内容来存储和检索数据(您似乎正在这样做)。 UI 元素应仅用于显示数据。
你需要给你的目标控制器一个String
类型的属性来保存用户名信息。
另外,请勿调用具有误导性的标签 username
。如果它是一个标签,请将其命名为 nameLabel
以使代码对外部读者可读和可理解。
【讨论】:
嗨,我已将其更改为usernameLabel
,当我打印该值时,var username = allUsernames[indexPath!.row]
返回一个字符串,它返回所选用户的用户名。 SP.usernameLabel.text
显示为 nil
您仍在使用 UI 来存储数据,在这种情况下是将其传递给控制器。在prepareForSegue
期间甚至没有创建标签,因此文本分配无效。使用目标控制器的字符串属性来保存这些数据。以上是关于将值传递给模态 UIViewController - Swift的主要内容,如果未能解决你的问题,请参考以下文章
在 setState 不起作用后,Reactjs 将值作为道具传递
在新的故事板中将值传递给 UIViewController - Swift
如何在 iOS Objective C 的嵌套 UICollectionViews 中从 Child UICollectionViewCell 的 UIButton 将值传递给新的 UIViewCon