【问题标题】:When is a delegate called?什么时候调用代表?
【发布时间】:2020-09-05 07:06:06
【问题描述】:

例如,当我设置一个 collectionView 并将一个 VC 设置为其委托 (UICollectionViewDelegate) 时,我无法理解何时调用委托。

是否在collectionView显示之前调用。或者当它已经显示时? 因为有些方法似乎为对象的布局提供了重要功能(例如部分中的项目数),但其他方法似乎提供了不太“重要的任务”。

到目前为止,我还无法掌握 iOS 开发中委托这个重要的概念。

【问题讨论】:

  • 你的意思是UICollectionViewDelegate的方法吗?
  • 是的对不起,我正在纠正它 rn

标签: ios swift uicollectionview delegates delegation


【解决方案1】:

委托方法是根据事件调用的。 请参考此链接 https://developer.apple.com/documentation/uikit/uicollectionviewdelegate

例如,当用户滚动时调用 scrollViewDidScroll 方法。 并且collectionView方法在collectionview挂载时被调用。

委托可以是接口,它调用 UICollectionView 类中定义的方法。

【讨论】:

  • 非常感谢,所以我的问题是:我怎么知道 collectionView 或其他对象何时在触摸或用户发生某些事情时调用它的委托?我的意思是:我想确切地知道对象何时调用它的委托。能不能看代码?
  • 代码不是开源的,所以你看不到。代表被调用以响应事件。设置数据源会调用数据相关的方法,重新加载也会调用其中的一些方法,然后是 UI 相关的方法。您最好的选择是在每个方法中打印出类似“numberOfItems called”的内容,然后执行操作以查看发生了什么以及何时发生,或者阅读每个委托方法的文档
【解决方案2】:

正如 Bojan 所说,UICollectionViewDelegates 是根据事件调用的。当您设置一个 collectionView 委托并且它的 dataSource 到 VC swift 将检查这些方法:

func numberOfSections(in collectionView: UICollectionView) -> Int
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

如果您在这些方法中返回零,则根本不会触发触发委托的事件。因此委托方法将在检查 dataSource

后调用

【讨论】:

    猜你喜欢
    • 2019-12-25
    • 1970-01-01
    • 2014-03-27
    • 2010-10-18
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多