我尝试使用UICollectionView创建一个虚拟照片应用。我的Xcode版本是7.2和Swift版本2.1.1。我按照Storyboard
中的教程使用http://www.raywenderlich.com/78550/beginning-ios-collection-views-swift-part-1来构建UI部分在Swift 2.0中, UICollectionViewDataSource 继承自 UICollectionViewController ,我们不需要显式声明这些协议。我为DataSource实现了必需的覆盖方法,并在 UICollectionViewController 中的 viewDidLoad()中注册了自定义单元格。我在我的单元格中放置了一个测试标签来检查它是否有效。不幸的是,在我启动应用程序后,标签永远不会出现。我在下面附上我的一些代码作为参考:
UICollectionViewController
class VacationsCollectionViewController: UICollectionViewController {
private let reuseIdentifier = "VacationCell"
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView!.registerClass(VacationsCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
}
// MARK: UICollectionViewDataSource
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
return 1
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! VacationsCollectionViewCell
// Configure the cell
cell.backgroundColor = UIColor.blueColor()
cell.CellText.text = "Show me the money"
return cell
}
}
UICollectionViewCell
class VacationsCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var CellText: UILabel!
}
知道为什么标签永远不会出现在我的虚拟应用程序中?
答案 0 :(得分:0)
看起来你拥有所需的一切。问题可能出在你的故事板上。为了安全起见,请在标签上添加约束,以便它能够正确显示。然后,向集合视图控制器添加扩展,并确保大小允许标签也显示。这至少对我有用,而且我确实处于你的确切状况。
extension OfficesCollectionViewController: UICollectionViewDelegateFlowLayout{
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: 200, height: 200)
}
}