【问题标题】:Delete card from Tispr card stack从 Tispr 卡片堆栈中删除卡片
【发布时间】:2026-01-08 12:00:01
【问题描述】:

我想用Thispr Card 做一个删除功能。你能指导我如何做到这一点。从堆栈中删除对象后,我确实重新加载了视图,但它对我来说崩溃了。

在我转到下一个视图并执行删除操作之后。然后当回来我的堆栈应该被刷新。在 viewdidappear() 我这样做了

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)



    if(dm.cardshouldRefresh || isFirsttimeLoad)
    {

        com.showProgress()

        self.getAuthorizations() { (status) in

            self.dm.cardshouldRefresh=false
            self.isFirsttimeLoad=false
            self.com.removeProgress()
            if (status)
            {
                self.setupCardView()

            }

        }
    }

    else
    {
        print(arrayAuthorization)

    }



}

func makecollectionViewEmpty()
{
    arrayAuthorization.removeAll()
    vwBtnPanelBottom.removeFromSuperview()
    self.collectionView?.reloadData()
}

但是一旦我在加载后尝试滑动,​​这就会崩溃。 请帮我。 谢谢

【问题讨论】:

    标签: ios swift3 uicollectionview


    【解决方案1】:

    TisprCardStackExample项目中添加以下方法,您将获得remove方法。

    TisprCardStackDemoViewController.swift

    //method to remove card
    @IBAction func addNewCards(_ sender: AnyObject) {
        countOfCards -= 1
        if(countOfCards >= 0){
            cardWasRemoved()
        }
    }
    

    TisprCardStackViewController.swift

    open func cardWasRemoved() {
        if layout.newCardShouldAppearOnTheBottom {
            layout.cardDidRemoved(0)
        } else {
            layout.cardDidRemoved(numberOfCards() - 1)
        }
    }
    

    TisprCardStackViewLayout.swift

    func cardDidRemoved(_ newCardIndex:Int) {        
        collectionView?.performBatchUpdates({ [weak self] _ in
            self?.collectionView?.deleteItems(at: [IndexPath(item: newCardIndex, section: 0)])
            }, completion: { _ in
        })
    }
    

    【讨论】:

    • 非常感谢。但需要一点澄清。 layout.cardDidRemoved(0) 这个 0 是什么?我需要传递要删除的汽车的索引吗?