swift2 单元格变量为空,其中值设置为集合视图索引路径

nzrxty8p  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(153)

我花了很多时间..但我不知道为什么它不工作..单元格的索引路径调用和设置值正确,但单元格类我发现零值..如果你需要任何信息,然后让我知道。
在我收藏中查看索引路径

在集合视图单元格中

下面是我代码:
对于集合视图:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: menuBarItemDetailId, for: indexPath) as! MenuBarItemDetail
        cell.shopCategory = "600"
        print(cell.shopCategory)
        return cell
    }

对于单元格:

class MenuBarItemDetail: UICollectionViewCell , UITableViewDataSource , UITableViewDelegate {
    var shopCategory : String?

    override init(frame: CGRect) {
        super.init(frame: frame)

         print("shopCategory :-> ...i am calling from cell :\(shopCategory)")
}
mgdq6dx1

mgdq6dx11#

因为您先调用了awakeFromNib方法,然后调用了cellForRow。您正在为cellForRow中的变量赋值,因此当第一个项目执行时,它的值为nil
解决方案
1.自定义单元类中变量

var myVar : String?

1.在自定义单元格类中创建方法

func myMethod(str : String){
    myVar = str
    print("var : \(myVar)")        
}

1.在cellForItem中,像这样调用函数

cell.myMethod(str: "343")

输出量

eagi6jfj

eagi6jfj2#

当你在写作时

let cell = collectionView.dequeueReusableCell(withReuseId`entifier: "MenuBarItemDetail", for: indexPath) as! MenuBarItemDetail`

当时“覆盖init(帧:CGRect)”,并且在init时没有为shopCategory赋值,这就是您得到nil的原因。
在MenuBarItemDetail中添加一个函数“getShopCategory”,当您想访问shopCategory的值时,可以使用getShopCategory函数获取该值。

import Foundation
import UIKit

    class MenuBarItemDetail: UICollectionViewCell  {
        var shopCategory : String?

        func  getShopCategory()  {
         print("shopCategory :-> ...i am calling from cell :\(shopCategory)")
        }

    }

控制器类别

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MenuBarItemDetail", for: indexPath) as! MenuBarItemDetail
        cell.shopCategory = "600"
        print(cell.shopCategory)
        cell.getShopCategory()
        return cell
    }

单元格是MenuBarItemDetail的当前示例,因此它将返回分配的shopCategory值
请让我知道它是否适合你。谢谢

相关问题