Swift中的Collection View和String type帮助

时间:2014-11-11 20:51:52

标签: swift xcode6

我正在尝试将图片发送到集合视图,类似于您在待办事项列表教程中的方式,但我正在处理图像,而不是文本。我在代码中遇到错误:

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是未声明的,但我不知道我应该在哪里或如何声明这个,因为我有其他项目收集视图我没有不需要申报任何东西。

如果你能提供帮助,请告诉我,谢谢!

1 个答案:

答案 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好运!