当前位置: 首页 > 知识库问答 >
问题:

快速错误-使用未声明的类型“cells”-集合视图

谷梁博易
2023-03-14

对于Swift编程来说,这是一个全新的过程,我的错误是什么原因?我该如何修复它呢?非常感谢。

import UIKit
import Photos


class PhotosViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource , UICollectionViewDelegateFlowLayout, UIImagePickerControllerDelegate, UINavigationControllerDelegate

{

    @IBOutlet weak var myCollectionView: UICollectionView!


    var imagesArray = [UIImage]()

    override func viewDidLoad(){
        super.viewDidLoad()
        myCollectionView.delegate = self
        myCollectionView.dataSource = self

    }

    @IBAction func addPhoto(_ sender: AnyObject) {

        let picker:UIImagePickerController = UIImagePickerController()
        picker.sourceType = .photoLibrary
        picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!

        picker.delegate = self
        picker.allowsEditing = false
        self.present(picker, animated: true, completion: nil)
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! cell


        cell.configurecell(imagesArray[indexPath.row])

        return cell

    }


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return imagesArray.count

    }



    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if let pickedimage = (info[UIImagePickerControllerOriginalImage] as? UIImage){
            imagesArray = [pickedimage,pickedimage,pickedimage]//Will store three selected images in your array
            myCollectionView.reloadData()
        }
        dismiss(animated: true, completion: nil)
    }
}

共有3个答案

通典
2023-03-14

以下是将集合视图单元格强制转换为自定义类类型的更好方法,而不需要“强制转换”(当您使用

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let _cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", for: indexPath)
    guard let cell = _cell as? CollectionViewCell else { return _cell } // Replace "CollectionViewCell" with your custom class name
    cell.configurecell(imagesArray[indexPath.row])
    return cell
}

如您所见,我使用 而不是 将单元格强制转换为类型

鄂育
2023-03-14
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! Your_Cell_Class_Name
        cell.configurecell(imagesArray[indexPath.row])
        return cell
}

在cellForItemAt方法中,只需替换 ,因为您的代码中没有名为cell的类。

快乐编码

何兴邦
2023-03-14

必须在属性检查器中设置标识符。

>

选择属性检查器

提供标识符名称(例如identifier=cell)

 类似资料:
  • 问题内容: Xcode 8 beta 4不再识别Foundation类。 我在一个简单的操场示例中复制了它: 由于在较早的Xcode 8 Swift 3 Beta中可用,我想这是一个需要修复的错误,而不是Playground中的某些源代码错误? 问题答案: 尽管未在Xcode发行说明中记录,但Swift Foundation中对Swift进化建议SE-0086 Drop NS Prefix 的第2

  • 操作步骤: 菜单栏: Navigate —> Type Declaration 快捷键: Mac: Shift + Command + B Windows\/Linux: Ctrl + Shift + B 鼠标: Mac: 按住Command+Shift键 —> 点击类、变量或方法 Windows\/Linux: 按住 Ctrl +Shift键 —> 点击类、变量或方法

  • 问题内容: 我收到此错误消息,说我没有使用变量……但是在我的菜鸟眼中,看起来我在: 谁能指出我对语言的缺失?我认为这与vs 和作用域有关,但我不确定。 问题答案: 在您的for循环声明了一个新的变量,其阴影外。将其变成平原以解决问题。 顺便说一下,为了获得相同的精度和更快的速度,您可以尝试以下实现,该实现一次执行两个步骤:

  • 问题内容: 编写并运行此代码后,编译器将显示Expected Declaration错误: 问题答案: 之所以会出现此错误,是因为您在类中的错误位置放置了代码,因此将其移至任何函数或viewDidLoad方法中。 您只能在类范围内声明,而不能执行表达式。 它将正常工作。 编辑: 在您的第二个UIViewController只是通过NSUserDefaults这种方式阅读highScore : 因此

  • 任务“:app:ExternalNativeBuildDebug”执行失败。生成命令失败。执行进程/home/raed/android/sdk/cmake/3.10.2.4988404/bin/ninja时出错,参数为{-c/home/raed/androidstudioprojects/simd/app/.CXX/cmake/debug/armeabi-v7a native-lib}ninja:

  • 问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl

  • cc.Class 是一个很常用的 API,用于声明 Cocos Creator 中的类,为了方便区分,我们把使用 cc.Class 声明的类叫做 CCClass。 定义 CCClass 调用 cc.Class,传入一个原型对象,在原型对象中以键值对的形式设定所需的类型参数,就能创建出所需要的类。 var Sprite = cc.Class({ name: "sprite" }); 以上代

  • 我试图整理一系列的意大利面条代码从Arduino项目处理wifi, mqtt和SPIFF存储配置和我发现的最简单的解决方案是有一个基类,其中包含指向子类的指针,每个子类都有指向父类的指针类,并在需要时可以调用基类及其指向对象的指针。 在这个SSCCE中,我有两个类A和B,其中B包含在A中,需要时可以访问A的方法。 尽管我有一个: gcc-c a. c-o a. o gcc-c b. c-o b.