在Swift中具有子类的多个实例
我对一个在Swift中具有子类的多个实例,swift,Swift,我对一个UICollectionViewCell进行了子类化,其中有一个UIImageView。此图像视图连接到故事板上的图像视图控件。这是子类: class ProfilesCell: UICollectionViewCell { @IBOutlet weak var ProfileImage: UIImageView! func setCell(item:Profile) { ProfileImage.image = UIImage(named: item.
UICollectionViewCell
进行了子类化,其中有一个UIImageView
。此图像视图连接到故事板上的图像视图控件。这是子类:
class ProfilesCell: UICollectionViewCell {
@IBOutlet weak var ProfileImage: UIImageView!
func setCell(item:Profile) {
ProfileImage.image = UIImage(named: item.profileThumb)
ProfileImage.layer.borderWidth = 0.5
ProfileImage.layer.borderColor = UIColor.grayColor().CGColor
}
}
我已经创建了它的一个实例,它工作得很好,但是另一个实例呢?如何选择它作为另一个UICollectionViewCell
的自定义类,而不将ProfileImage
重新连接到另一个控件
或者我应该首先将IBOutlet
连接到UIImageView
故事板:
此图像视图[来自单元]连接到故事板上的图像视图控件
我假设您谈论的是一个UICollectionViewCell
原型。在本例中,您在故事板中操作的对象不是集合视图单元,而是UIImageView
中所有图像视图单元的原型
我已经创建了它的一个实例,它工作得很好,但是另一个实例呢
这正是斯威夫特的设计师们想要的场景,所以一切都应该按照你期望的方式进行。当您调用dequeueReusableCellWithReuseIdentifier:
方法时,Cocoa会为您实例化单元格,“连接”您的ProfileImage
到其UIImageView
出口,并为您提供一个可供使用的单元格
此图像视图[来自单元]连接到故事板上的图像视图控件
我假设您谈论的是一个UICollectionViewCell
原型。在本例中,您在故事板中操作的对象不是集合视图单元,而是UIImageView
中所有图像视图单元的原型
我已经创建了它的一个实例,它工作得很好,但是另一个实例呢
这正是斯威夫特的设计师们想要的场景,所以一切都应该按照你期望的方式进行。当您调用
dequeueReusableCellWithReuseIdentifier:
方法时,Cocoa会为您实例化单元格,“连接”您的ProfileImage
到其UIImageView
出口,并为您提供一个可供使用的单元格。如果您想跨多个UICollectionView使用UICollectionViewCell,您应该在单独的.xib中创建UICollectionViewCell。在本例中,您将拥有ProfileCell.xib和ProfileCell.swift。在.xib文件中,将UICollectionViewCell的实例拖到屏幕上,并将其设置为CollectionView上的原型单元格
然后,您需要在collectionview中注册该单元格
//set this up in viewDidLoad
let nib = UINib(nibName: "ProfileCell", bundle: nil)
self.collectionView!.registerNib(nib, forCellWithReuseIdentifier: "ProfileCell")
然后在cellForItemAtIndexPath中,仅以正常方式引用单元格
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
cell = self.collectionView?.dequeueReusableCellWithReuseIdentifier("ProfileCell, forIndexPath: indexPath) as! ProfileCell
cell.setCell()
return cell
}
如果要跨多个UICollectionView使用UICollectionViewCell,应在单独的.xib中创建UICollectionViewCell。在本例中,您将拥有ProfileCell.xib和ProfileCell.swift。在.xib文件中,将UICollectionViewCell的实例拖到屏幕上,并将其设置为CollectionView上的原型单元格 然后,您需要在collectionview中注册该单元格
//set this up in viewDidLoad
let nib = UINib(nibName: "ProfileCell", bundle: nil)
self.collectionView!.registerNib(nib, forCellWithReuseIdentifier: "ProfileCell")
然后在cellForItemAtIndexPath中,仅以正常方式引用单元格
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
cell = self.collectionView?.dequeueReusableCellWithReuseIdentifier("ProfileCell, forIndexPath: indexPath) as! ProfileCell
cell.setCell()
return cell
}
你能澄清你的问题是什么吗?您是否正在尝试跨多个CollectionView重复使用一个imageview?或者你想在每个视图中使用不同的图像?@bolan我想在多个CollectionViews中重复使用它。如果你将原型单元格正确连接到tableview,它将使用该单元格而不是UICollectionViewCell。它将profileImage作为UIImageView引用。确保在情节提要上覆盖了类名,因为如果您不确定是否覆盖了类名,您的自定义类名可能希望发布一些情节提要图片correctly@bolnad如您所见,
MalesCV
中的UIImageView
已连接到档案cell
,我有另一个collectionview,就像MalesCV
一样,我想将它用于这个子类。你能澄清你的问题吗?您是否正在尝试跨多个CollectionView重复使用一个imageview?或者你想在每个视图中使用不同的图像?@bolan我想在多个CollectionViews中重复使用它。如果你将原型单元格正确连接到tableview,它将使用该单元格而不是UICollectionViewCell。它将profileImage作为UIImageView引用。确保在情节提要上覆盖了类名,因为如果您不确定是否覆盖了类名,您的自定义类名可能希望发布一些情节提要图片correctly@bolnad如您所见,MalesCV
中的UIImageView
已连接到档案cell
,我有另一个collectionview,就像MalesCV
一样,并希望将其用于此子类。当我在第二个collectionview中使用此子类时,我面临以下错误:致命错误:在展开可选值时意外发现了nil
@Maysam您是否将单元格作为原型单元格添加到Xcode。是的,我看了,看故事板上的图片。如果我删除了第二个集合视图,一切正常。@Maysam我没有看到关于多个集合视图重用同一类的更新。有关如何做到这一点的信息,请参见答案2。Q&A讨论了UITableViewCell
对象,但很容易适应集合视图单元格。当我将此子类用于第二个集合视图时,我面临以下错误:致命错误:在展开可选值时意外发现nil
@Maysam您是否将单元格作为原型单元格添加到Xcode。是的,我看了,看故事板上的图片。如果我删除了第二个集合视图,一切正常。@Maysam我没有看到关于多个集合视图重用同一类的更新。有关如何做到这一点的信息,请参见答案2。问答讨论了UITableViewCell