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

ios - UICollectionView Controller 和在准备 Segue 中传递 CloudKit 数据

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

我已经成功地使用 CloudKit 记录中的数据和图像填充了 UICollectionView Controller ,但是我在将所选单元格传递给详细信息 UIViewController 时遇到问题。到目前为止,这是我的代码 -

override func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
}


override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.staffArray.count

}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> StaffCVCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! StaffCVCell

    let staff: CKRecord = staffArray[indexPath.row]

    let iconImage = staff.object(forKey: "staffIconImage") as? CKAsset
    let iconData : NSData? = NSData(contentsOficonImage?.fileURL)!)


    let leaderNameCell = staff.value(forKey: "staffName") as? String
    cell.leaderNameLabel?.text = leaderNameCell

    cell.leaderImageView?.image = UIImage(data:iconData! as Data);
    return cell 
}


func prepare(for segue: UIStoryboardSegue, sender: StaffCVCell) {
    if segue.identifier == "showStaffDetail" {
        let destinationController = segue.destination as! StaffDetailsVC
        if let indexPath = collectionView?.indexPath {
            let staffLeader: CKRecord = staffArray[indexPath.row]
            let staffID = staffLeader.recordID.recordName
            destinationController.staffID = staffID
        }
    }
}

问题出现在线路上-

让 staffLeader: CKRecord = staffArray[indexPath.row]

我遇到错误的地方 -

Value of type '(UICollectionViewCell) -> IndexPath?' has no member 'row'

我尝试用单元格替换行,但这只会出现另一个错误 -

Value of type '(UICollectionViewCell) -> IndexPath?' has no member 'cell'

我确信我缺少一些基本的东西,但看不到它。任何指针都非常感谢。



Best Answer-推荐答案


如果你的 segue 是通过触摸一个单元格来触发的,你需要下面的代码行:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "showStaffDetail" {

        let destinationController = segue.destination as! StaffDetailsVC

        // Find the correct indexPath for the cell that triggered the segue
        // And check that the sender is, in fact, a StaffCVCell
        if let indexPath = collectionView?.indexPath(for: sender), let sender = sender as? StaffCVCell {

            // Get your CKRecord information
            let staffLeader: CKRecord = staffArray[indexPath.item]
            let staffID = staffLeader.recordID.recordName

            // Set any properties needed on your destination view controller
            destinationController.staffID = staffID
        }
    }
}

请注意,我已将方法签名改回标准方法签名。

关于ios - UICollectionView Controller 和在准备 Segue 中传递 CloudKit 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42815072/

回复

使用道具 举报

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

本版积分规则

关注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