Fre*_*ust 0 ios uicollectionview swift
我有一个带有nib的自定义UICollectionViewCell,我想在UICollectionView的cellForItemAt方法中加载但是没有从集合视图的dequeueReusableCell方法获取/实例化单元格.
我遇到的问题是,当明白地加载单元格时:
let cell = MyCustomCell()
Run Code Online (Sandbox Code Playgroud)
这是IB属性没有加载,我也尝试过调用:
cell.awakeFromNib() and/or layoutIfNeeded()
Run Code Online (Sandbox Code Playgroud)
没有效果.我可以使用dequeue方法从IB加载视图,但如上所述,不能使用它.
我在视图控制器的viewDidLoad中正确地注册了nib,其中集合视图存在于:
let name = String(describing: MyCustomCell.self)
collectionView.register(
UINib(
name: name,
bundle: nil),
forCellWithReuseIdentifier: "customCell")
Run Code Online (Sandbox Code Playgroud)
IBOutlets不能处理您的MyCustomCell实例的原因是因为只实例化了类而不是xib/nib.当您在tableView中注册一个单元格然后将该单元格出列时,这两个单元格都会被初始化,并且这就是魔法发生的地方.
如果你真的想在不使用tableview的dequeue方法的情况下加载单元格,那么你可以这样做:
创建一个UITableViewCell自定义类的var,在本例中是MyCustomCell
var notReusableCell:CellTableViewCell?
Run Code Online (Sandbox Code Playgroud)在viewDidLoad nib并获取你想要的视图在这种情况下我们想要单元格,这将是第一个视图.
let nib = Bundle.main.loadNibNamed("CellTableViewCell", owner: self, options: nil)
notReusableCell = nib?.first as! CellTableViewCell?
现在在您的cellForRowAt方法中传递存储在var中的单元格
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = notReusableCell else { return CellTableViewCell() }
return cell
}
请修改你想要做的事情,因为这种做法并不常见.
| 归档时间: |
|
| 查看次数: |
1090 次 |
| 最近记录: |