Swift:在没有 collection 视图控制器的情况下实现 collection 视图
Swift: Implementing collection view without collection view controller
我设置了一个 CollectionViewController 并且让事情运行得很好而且很直接。
class CollectionController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
.
.
.
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewCell
cell.myTitle.text = self.titles[indexPath.row]
let imgName = "pic\(indexPath.row).jpg"
cell.myImage.image = UIImage(named: imgName)
return cell
}
}
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myTitle: UILabel!
@IBOutlet weak var myImage: UIImageView!
}
现在我只想用 UICollectionView
做同样的事情(不是 UICollectionViewController
)。我同样实现了我的 Collection,但是当我 运行 我的应用程序没有渲染单元格时。
class ViewController: UIViewController, UICollectionViewDelegateFlowLayout {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
class CollectionView: UICollectionView, UICollectionViewDelegateFlowLayout {
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewCell
cell.myTitle.text = self.titles[indexPath.row]
let imgName = "pic\(indexPath.row).jpg"
cell.myImage.image = UIImage(named: imgName)
return cell
}
}
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myTitle: UILabel!
@IBOutlet weak var myImage: UIImageView!
}
我是否需要在 ViewController
中执行一些初始化?我想我在这里遗漏了一些小东西:(
*我正在使用故事板,所以我的单元格等是在那里生成的,而不是通过代码生成的。
您的视图控制器是否设置为集合视图的委托和数据源?
您可以通过 collectionView.delegate = self
之类的代码或通过在视图控制器和集合视图之间按住 control 并拖动从情节提要中执行此操作。
你应该遵循这个 link:
http://adoptioncurve.net/archives/2012/09/a-simple-uicollectionview-tutorial/
这个想法是您需要注册 nib(如果将 xib 用于自定义单元格)或注册 class 自定义单元格和 cellidentifier
我设置了一个 CollectionViewController 并且让事情运行得很好而且很直接。
class CollectionController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
.
.
.
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewCell
cell.myTitle.text = self.titles[indexPath.row]
let imgName = "pic\(indexPath.row).jpg"
cell.myImage.image = UIImage(named: imgName)
return cell
}
}
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myTitle: UILabel!
@IBOutlet weak var myImage: UIImageView!
}
现在我只想用 UICollectionView
做同样的事情(不是 UICollectionViewController
)。我同样实现了我的 Collection,但是当我 运行 我的应用程序没有渲染单元格时。
class ViewController: UIViewController, UICollectionViewDelegateFlowLayout {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
class CollectionView: UICollectionView, UICollectionViewDelegateFlowLayout {
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as CollectionViewCell
cell.myTitle.text = self.titles[indexPath.row]
let imgName = "pic\(indexPath.row).jpg"
cell.myImage.image = UIImage(named: imgName)
return cell
}
}
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myTitle: UILabel!
@IBOutlet weak var myImage: UIImageView!
}
我是否需要在 ViewController
中执行一些初始化?我想我在这里遗漏了一些小东西:(
*我正在使用故事板,所以我的单元格等是在那里生成的,而不是通过代码生成的。
您的视图控制器是否设置为集合视图的委托和数据源?
您可以通过 collectionView.delegate = self
之类的代码或通过在视图控制器和集合视图之间按住 control 并拖动从情节提要中执行此操作。
你应该遵循这个 link: http://adoptioncurve.net/archives/2012/09/a-simple-uicollectionview-tutorial/ 这个想法是您需要注册 nib(如果将 xib 用于自定义单元格)或注册 class 自定义单元格和 cellidentifier