我正在尝试将数据从我的cellClass传递到viewController。我可以轻松地将标签文本从cellClass传递到vc,但不能在vc中设置变量。
这是我的模特课:
class Item: NSObject {
var itemId: String?
var itemLabel: String?
}下面是我的didSelectItem CellClass代码:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let item = item?[indexPath.item] {
let vc = VC()
vc.presentVC(launcher: vc)
vc.item = item
if let id = item.itemId {
vc.itemId = id
}
}
}在这里,presentVC是我为表示vc而创建的扩展。这就是我在我的ViewController中所写的:
class VC: UIViewController {
var itemId = String()
let itemLabel: UILabel = {
let label = UILabel()
label.text = "TEST TEST TEST"
return label
}()
var item: Item? {
didSet {
itemLabel.text = item?.itemLabel
if let id = item?.itemId {
itemId = id
}
}
}
}因此,通过这样做,我可以从itemLabel获得cellClass,但是id现在正在设置并显示nil。我怎么才能修好它?
发布于 2017-09-22 16:41:56
所以我把它修好了!问题是,每次在didSelectItem上选择项时,都会调用didSet方法。所以我首先创建了一个方法,如下所示:
func setupId(item: Item) {
var itemId = String()
if let id = item.itemId {
itemId = id
}
print(itemId)
}在didSet中,我添加了这样的函数:
var item: Item? {
didSet {
itemLabel.text = item?.itemLabel
if let item = item {
setupId(item: item)
}
}
}这差不多就是解决办法了!
https://stackoverflow.com/questions/46367075
复制相似问题