Ios 通过显示单个单元格的UICollectionView来触发函数
我目前正在制作一个Pokedex应用程序,这是我的第一个应用程序 这是我正在使用的视图的屏幕截图 屏幕截图是在滑动中拍摄的,显示我希望如何触发UI更新 口袋妖怪图片的顶部栏是一个UICollectionView,显示单个UICollectionViewCell。我想触发一个功能,更新用户界面到下一个口袋妖怪时,图片是一半离开屏幕 我尝试了以下方法:Ios 通过显示单个单元格的UICollectionView来触发函数,ios,iphone,swift,Ios,Iphone,Swift,我目前正在制作一个Pokedex应用程序,这是我的第一个应用程序 这是我正在使用的视图的屏幕截图 屏幕截图是在滑动中拍摄的,显示我希望如何触发UI更新 口袋妖怪图片的顶部栏是一个UICollectionView,显示单个UICollectionViewCell。我想触发一个功能,更新用户界面到下一个口袋妖怪时,图片是一半离开屏幕 我尝试了以下方法: func UICollectionView DiEndDisplayingCell func UICollectionView cellForIt
- func UICollectionView DiEndDisplayingCell
- func UICollectionView cellForItemAtIndexPath
- func UICollectionView willDisplayCell
func scrollViewDidScroll(scrollView: UIScrollView) {
let bounds = UIScreen.mainScreen().bounds
let width = bounds.size.width
let offset = self.collectionView.contentOffset.x
var pokeID = Int((offset-width/2)/width+2) {
didSet {
print("Change Detected")
}
}
print(offset)
print(pokeID)
}
此代码打印正确的口袋妖怪。我尝试使用willSet和didSet来触发“pokeID”的变化,但没有任何运气。
有人对我如何做到这一点有什么想法吗?听起来你想要这样的东西:
private var currentPokeID: Int = -1 {
didSet {
if currentPokeID != oldValue {
updateViews()
}
}
}
func scrollViewDidScroll(scrollView: UIScrollView) {
let bounds = self.collectionView.bounds
let midpoint = CGPointMake(bounds.midX, bounds.midY)
if let indexPath = self.collectionView.indexPathForItemAtPoint(midpoint) {
currentPokeID = indexPath.item
}
}
你说“我试过使用willSet和didSet”,但你没有说你把这些观察者放在了什么属性上。向我们展示您尝试过的代码。我编辑代码以显示我尝试过的基本内容。我确实研究了willSet-didSet特性,我是否需要将变量嵌套在类或结构中?这是一个不错的选择。非常感谢你的帮助。