gpt4 book ai didi

ios - 从 View Controller 中取出 collectionview 委托(delegate)和数据源

转载 作者:行者123 更新时间:2023-11-29 01:14:33 24 4
gpt4 key购买 nike

首先我应该说我对 swift 还很陌生。我试图让我的 View Controller 尽可能干净。我创建了以下类

class AlbumArtist: UICollectionView, UICollectionViewDataSource, UICollectionViewDelegate {
var musicLib = musicLibrary()
var albumCollection: UICollectionView!
var layout: CustomCollectionViewFlow!

init(albumCView: UICollectionView){
let nib = UINib(nibName: "CollectionViewCell", bundle: nil)
albumCollection = albumCView

musicLib.loadAlbums()
layout = CustomCollectionViewFlow()
print(layout)
super.init(frame: albumCollection.frame, collectionViewLayout: layout)
albumCollection.registerNib(nib, forCellWithReuseIdentifier: "item")
}

required init?(coder: NSCoder) {
musicLib.loadAlbums()
layout = CustomCollectionViewFlow()

super.init(coder: coder)
}

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return musicLib.getAlbumsCount()
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: CollectionViewCell = albumCollection.dequeueReusableCellWithReuseIdentifier("item", forIndexPath: indexPath) as! CollectionViewCell

let objects = musicLib.getAlbums().objectAtIndex(indexPath.item) as! MPMediaItemCollection
let repObjects = objects.representativeItem

cell.lbl_Name.text = repObjects!.valueForProperty(MPMediaItemPropertyAlbumTitle) as? String

let artwork = repObjects!.valueForProperty(MPMediaItemPropertyArtwork)

let artworkImage = artwork?.imageWithSize(CGSize(width: 230, height: 230))

if(artworkImage != nil){
cell.img_artwork.image = artworkImage
}
else{
cell.img_artwork.image = UIImage(named: "no_Artwork.png")
}


return cell
}

但是我的 init 方法出现错误。必须调用父类(super class)“UICollectionView”的指定初始值设定项

我不确定我正在做的事情是否正确,我找不到任何有关如何执行此操作的示例。因此,如果我完全错了,我很想听听我需要做什么。

编辑:我更新了我的代码,它现在正在运行。然而,它永远不会涉及委托(delegate)方法,因此 Collection View 永远不会被填充。我用新代码更新了帖子中的代码。在我的 viewController 中,我在 viewDidLoad 中像这样调用上面的类

AlbumArtist(albumCView: AlbumCollectionView)

我不确定我所做的是否正确

最佳答案

您正在尝试从 UICollectionView 类继承,它根本没有任何问题,但是有几种方法可以创建 UICollectionView 而无需从该类继承UICollectionView:

  • 您可以使用 Interface Builder 在 UIViewController 中为 UICollectionView 创建一个 @IBOutlet
  • 创建一个 UICollectionViewController 来管理所有使用 Interface Builder
  • UIViewController 中创建一个 UIContainerView 以放入 UICollectionViewController

希望对你有帮助

关于ios - 从 View Controller 中取出 collectionview 委托(delegate)和数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com