值观察器无法正确通信

问题描述 投票:2回答:1

点击手势由以下功能触发;

@objc func handleTapGR(tapGR: UITapGestureRecognizer) {
        let tapLocation = tapGR.location(in: nil)
        let moveNext = tapLocation.x > frame.width / 2 ? true : false

        moveNext ? userCards.nextImage() : userCards.previousImage()
    }

UserCardViewModel:

...        
    var imageIndex: Int = 0 { didSet{ imageIndexObserver?(imageIndex, userImages[imageIndex]) } }

    var imageIndexObserver: ((Int, UIImage) -> () )?
    mutating func nextImage() {
        imageIndex = imageIndex + 1 >= userImages.count ? 0 : imageIndex + 1
    }

    mutating func previousImage() {
        imageIndex = imageIndex - 1 < 0 ? userImages.count - 1  : imageIndex - 1
    }

更改索引时需要触发相关的关闭。下面的对象在相关视图中。

var userCards: UserCardViewModel! {
        didSet{
            userCards.imageIndexObserver = { index, image in
                self.showingImage.image = self.userCards.userImages[index]
                print(index)                
           }
        }
    }

在前两次点击时,我无法在索引语句上方打印。当我在图像上按右侧时(相关数组数为2)

  • 第一次点击;什么也没发生。
  • 第二次点击;打印0。
  • 第三处,它打印索引= 1。
  • 我正在这样初始化(从相关的viewcontroller)

convenience init(userCards: UserCardViewModel) {
        self.init(frame: .zero)
        self.userCards = userCards
        configure()
    }

点击手势由以下功能触发; @objc func handleTapGR(tapGR:UITapGestureRecognizer){let tapLocation = tapGR.location(in:nil)let moveNext = tapLocation.x> ...

swift memory-management closures uitapgesturerecognizer observers
1个回答
0
投票

我已在视图中添加手势。当您点击右侧索引时,计数将增加(左侧将减少),一旦达到数组计数,它将再次从0开始。

© www.soinside.com 2019 - 2024. All rights reserved.