通过投射我自己的 collectionViewCell 导致 Xcode Swift 错误
Posted
技术标签:
【中文标题】通过投射我自己的 collectionViewCell 导致 Xcode Swift 错误【英文标题】:Xcode Swift error by casting my own collectionViewCell 【发布时间】:2021-08-20 15:39:26 【问题描述】:我尝试创建自己的 collectionViewCell。但是通过将其转换为 cellForItemAt indexPath 方法会引发错误。 我不知道为什么。 我希望你能帮助我。
import UIKit
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
// MARK: Outlets
@IBOutlet weak var testCollectionView: UICollectionView!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
self.testCollectionView.register(TestCollectionViewCell.self, forCellWithReuseIdentifier: "testCell")
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 10
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "testCell", for: indexPath) as! TestCollectionViewCell
cell.testLabel.text = "Hihi Test!"
return cell
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: view.frame.width, height: 80)
这是 collectionViewCell 类:
import UIKit
class TestCollectionViewCell: UICollectionViewCell
var testLabel: UILabel =
let label = UILabel()
return label
()
override init(frame: CGRect)
super.init(frame: frame)
addSubview(testLabel)
testLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
testLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
required init?(coder: NSCoder)
fatalError("init(coder:) has not been implemented")
这是启动应用程序的错误:
【问题讨论】:
也许可以尝试将TestCollectionViewCell
重命名为CollectionViewCellTest
(可能行不通,但我想我记得一些关于不使用前面的“Test”命名类)
您可以更新之前的问题,而不是创建新问题。尽管。 TestCollectionViewCell
是纯代码,还是用xib设置的?你的collectionView IBOutlet 在情节提要中有一个单元格吗?
是的。 TestCollectionViewCell 只是代码(参见附录中的代码)。是的,在我的故事板中,我有一个测试单元。
谢谢你,但很遗憾重命名文件不起作用。
Storyboard 的collectionView 中有一个testCell?你设置了它的reuseIdentifier吗?它的类?如果TestCollectionViewCell
是纯代码,只需从情节提要中删除多余的单元格即可。
【参考方案1】:
首先,将您的单元格注册到viewDidLoad
方法中:
testCollectionView.register(UINib(nibName: "TestCollectionViewCell", bundle: Bundle(for: type(of: self))), forCellWithReuseIdentifier: "testCell")
【讨论】:
嗨。感谢您的回答!不幸的是,它对我不起作用。它抛出此错误:线程 1:“无法在包中加载 NIB:'NSBundle /timmeyerdiercks/Library/Developer/CoreSimulator/Devices/6E88FC2B-FD4D-459D-AAC8-E75BB959B603/data/Containers/Bundle/Application/ EBF5B5AF-1267-4602-99DE-D54FDE617EF2/CollectionViewTestApp.app>(已加载)',名称为 'CollectionViewCellTest'"以上是关于通过投射我自己的 collectionViewCell 导致 Xcode Swift 错误的主要内容,如果未能解决你的问题,请参考以下文章
我可以根据自己的需要为 Google Home 实施投射功能吗?