快速展开函数 3
Posted
技术标签:
【中文标题】快速展开函数 3【英文标题】:unwrapping a function swift 3 【发布时间】:2017-06-28 04:14:35 【问题描述】:对于我的一生,我无法弄清楚为什么我不能让这个函数工作以响应indexPath
被选中。
当我在didSelectItemAtIndexPath
的行中添加断点时,它会中断,但是当我在viewscontroller 类中添加一个断点时,它不会中断。就好像信息正在发送,但无法到达目的地。我的控制台没有出现任何错误,而且我已经多次查看了所有内容。
这可能是一个 xcode 错误还是我错过了什么?
这里是我引用它所在的类的地方
var viewsController: ViewsController?
这是我的didSelectItemAtIndexPath
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
viewsController?.scrollToMenuIndex(indexPath.item)
print(indexPath.item)
这是函数本身
func scrollToMenuIndex(_ menuIndex: Int)
let indexPath = IndexPath(item: menuIndex, section: 0)
collectionView?.scrollToItem(at: indexPath, at: UICollectionViewScrollPosition(), animated: true)
【问题讨论】:
一切正常,就好像我无法分离数据一样。 *请注意,这是在没有故事板的情况下以编程方式完成的。 如果 scrollToMenuIndex 属于同一类,那么 scrollToMenuIndex(indexPath.item) 就足够了!! 【参考方案1】:您的viewsController
已声明但未初始化。所以不知道调用了哪个类方法。
var viewsController: ViewsController?
如果scrollToMenuIndex
在同一个班级,只需scrollToMenuIndex(indexPath.item)
就足够了!!如果不在同一个视图控制器中,则需要将viewsController
初始化为
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let viewsController= storyboard.instantiateViewController(withIdentifier: "someViewController")
viewsController?.scrollToMenuIndex(indexPath.item)
print(indexPath.item)
希望对您有所帮助。快乐编码!
【讨论】:
viewsController 是我的 rootViewController 所在的位置。我正在尝试构建的是一个类似于 youtube 标签栏的控制器。因此,您在选项卡栏中选择一个单元格,它将集合视图滚动到适当的单元格。这是两种不同类型的 UICollectionViewCell,位于不同类中的两个独立视图控制器中。 你的viewsController初始化了吗??【参考方案2】:有效时的引用为viewsController返回nil。
因此,在引用集合视图的闭包中,该集合视图包含我用于 didSelectItemAtIndexPath
(位于 viewsController 中)的单元格,
我必须添加 c.viewsController = self 并修复它。
我将不得不看一下文档对此的说明。如果还没有人解释这种行为,我会更新我的答案。
【讨论】:
以上是关于快速展开函数 3的主要内容,如果未能解决你的问题,请参考以下文章