collectionView:layout:sizeForItemAt 未调用 swift 4 iOS 11
Posted
技术标签:
【中文标题】collectionView:layout:sizeForItemAt 未调用 swift 4 iOS 11【英文标题】:collectionView:layout:sizeForItemAt not called swift 4 iOS 11 【发布时间】:2017-10-23 18:50:12 【问题描述】:class HomeController: UICollectionViewController, UICollectionViewDelegateFlowLayout
private let cellId = "cellId"
override func viewDidLoad()
super.viewDidLoad()
collectionView?.register(Cell.self, forCellWithReuseIdentifier: cellId)
collectionView?.backgroundColor = UIColor.red
override func numberOfSections(in collectionView: UICollectionView) -> Int
return 1
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 3
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! Cell
return cell
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: 150, height: 150)
class Cell: UICollectionViewCell
override init(frame: CGRect)
super.init(frame: frame)
setup()
required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
func setup()
backgroundColor = UIColor.black
numberOfSections
和 numberOfItemsInSection
被调用(根据断点),但 cellForItemAt
和 sizeForItemAt
从未被调用。
我没看出有什么不对吗?
更新:(我如何在 AppDelegate 中创建 HomeController)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let layout = UICollectionViewLayout()
let homeController = HomeController(collectionViewLayout: layout)
window?.rootViewController = UINavigationController(rootViewController: homeController)
return true
【问题讨论】:
您是否以编程方式制作集合视图?如果不删除该行 -: collectionView?.register(Cell.self, forCellWithReuseIdentifier: cellId),并使用情节提要中提供的标识符 我正在以编程方式进行。没有故事板。 @VanDuTran 你在使用 XIB 吗?不,那么你是如何创建HomeController
的实例的
@Jack 我用更多代码更新了我的帖子。我没有使用 XIB。这一切都是程序化的。
【参考方案1】:
你正在使用UICollectionViewLayout()
你应该use -
let layout = UICollectionViewFlowLayout()
【讨论】:
以上是关于collectionView:layout:sizeForItemAt 未调用 swift 4 iOS 11的主要内容,如果未能解决你的问题,请参考以下文章