我正在尝试将图片发送到集合视图,类似于您在待办事项列表教程中的方式,但我正在处理图像,而不是文本。我在代码中遇到错误:
Picture.append(picture.image)
错误表明[String]没有名为“image”的成员。
如果我不能使用字符串,我该如何处理?我应该使用哪种其他类型?
我在cellForItemAtIndexPath部分也遇到错误。这是我的代码:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as Cell
cell.ImageView.image = UIImage(named: picture[indexPath.row])
return cell
}
在这里我得到一个错误,说第一行末尾的Cell是未声明的,但我不知道我应该在哪里或如何声明这个,因为我有其他项目收集视图我没有不需要申报任何东西。
如果你能提供帮助,请告诉我,谢谢!
答案 0 :(得分:0)
我相信我看到了错误的根源。我将介绍下面的每个错误,以及如何减轻它们的建议。
Picture.append(picture.image)
错误:[String]没有名为' image'。
的成员
因为您正在收集会员"图像"通过来自对象"图片"的点符号,该错误表明"图片" (小写的一个)是一个标准的Swift字符串数组。
Swift Strings没有名为" image"在它们中,所以错误指出了这一点。如果您只想要图像的文件名,可以将其保留为字符串。
然后,当你在下一段代码中调用它时,它只是拉出文件名String并将其传递给那个UIImage初始化器。
通过查看下一个代码段中的代码,我认为您实际上可能意味着这样的事情:
let image = "someImage.png" //The filename for the image to append to the array.
var picture = [String]() //An array of Strings to hold the filenames to the images.
picture.append(image)
在这种情况下,我们有一个名为" picture"的数组,然后我们将文件名String(存储为名为"图像"的字符串)附加到此数组。
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as Cell
错误:使用未声明的类型' Cell'
这表示Cell类型未声明。我还没有使用过UICollectionView,但根据我的理解,它的数据类型是一个UICollectionViewCell,而不仅仅是" Cell" (首都)。您可能必须将其键入为UICollectionViewCell。
根据我的研究,似乎UICollectionViewCell没有名为ImageView
的成员。在这种情况下,您可以编写一个名为Cell的UICollectionViewCell的自定义子类,并为其提供一个名为ImageView的属性,如:
class Cell: UICollectionViewCell
{
var imageView = UIImageView()
}
cell.imageView.image = UIImage(named: "someImage.png")
关于我上面的代码的一个注释,我将该属性重命名为" imageView" (现在以小写' I'开头)。 Apple建议我们只在开头用大写字母命名类型(如UICollectionViewCell或String)。函数和属性应以小写字母开头,以符合该编码标准。
然后,您可以将imageView从故事板或代码的其他部分连接到此属性,并将您的UICollectionViewCell设置为此" Cell"键入,并设置imageView属性。
有关使用UICollectionViews的更多信息,请查看Brian J Coleman's post "Tutorial: Collection View Using Swift"
我希望我的答案有所帮助。祝学习Swift好运!