• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何访问从 UICollectionView 到 UICollectionReusableView 的网点?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:40:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

ViewController 中的注册头:

self.itemCollectionView.register(NewSubscriptionRequestCollectionReusableView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "NewSubscriptionRequestCollectionReusableView")

在 CollectionView 委托(delegate)方法中:

extension UpcomingSubscriptionListViewController:  UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

    let headerView = itemCollectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "NewSubscriptionRequestCollectionReusableView", for: indexPath) as! NewSubscriptionRequestCollectionReusableView
    headerView.newSubscriptionRequestViewDelegate = self
    return headerView
}

我的 Header 集合文件

protocol NewSubscriptionRequestViewDelegate : class {

}

class NewSubscriptionRequestCollectionReusableView: UICollectionReusableView {

weak var newSubscriptionRequestViewDelegate:  NewSubscriptionRequestViewDelegate?
var contentView : NewSubscriptionRequestCollectionReusableView?

override init(frame: CGRect) {
    super.init(frame: frame)
    let contents = Bundle.main.loadNibNamed("NewSubscriptionRequestCollectionReusableView", owner: self, options: nil)?.first as! NewSubscriptionRequestCollectionReusableView
    contents.frame.size.width = UIScreen.main.bounds.width
    contents.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    self.addSubview(contents)
}

@IBOutlet var pdfStatus: UILabel!
@IBOutlet var nutritionView: UIView!
@IBOutlet var dateView: UIView!
@IBOutlet var nutritionPlanLabel: UILabel!
@IBOutlet var calendarLabel: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()
    dateView.layer.cornerRadius = 10
    nutritionView.layer.cornerRadius = 10
}


required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
}

我想从 viewController 类中更改 pdfStatus 标签,但是当我尝试通过以下代码实现时。它给了我 nil

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

   let headerView = itemCollectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "NewSubscriptionRequestCollectionReusableView", for: indexPath) as! NewSubscriptionRequestCollectionReusableView
    headerView.newSubscriptionRequestViewDelegate = self
    headerView.pdfStatus.text = "something" .  // Getting nil here
    return headerView
}



Best Answer-推荐答案


您在注册可重用 View 时实现了错误的方法。您需要使用此方法注册您的 reusableView。



没有



如果你没有注册你的 XIB,UICollectionView 没有任何关于 IBOutlet(IBAction 也是)的数据。因此,您的单元格可以使用定义的 init 方法创建,但 IBOutlet 为 nil。

所以你的代码应该是这样的



registerNib:forCellWithReuseIdentifier:

关于ios - 如何访问从 UICollectionView 到 UICollectionReusableView 的网点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57832757/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap