在IOS中的uitableview中显示和隐藏uitableviewcells

时间:2017-04-07 05:48:56

标签: ios iphone swift uitableview

点击下面的视图后,图像中突出显示的区域将隐藏/显示(标签为附加卡片),iOS中是否有任何库可以执行此操作?如果没有,那怎么办呢?

Prototype image for hide/show uitableview Cell

3 个答案:

答案 0 :(得分:0)

我想你想扩展和折叠tableview单元格。但是abouv库也不错。但是,如果你想在没有任何库的情况下学习如何做到这一点,并且有很多关于tableview的东西你将来可能会有所帮助。 演示和链接一步一步https://www.raywenderlich.com/129059/self-sizing-table-view-cells

另外,您可以直接从这里下载演示。https://github.com/soapyigu/Swift30Projects/tree/master/Project%2005%20-%20Artistry。您还会在我给您的第一个网址上找到下载链接。

答案 1 :(得分:0)

您可以创建自定义视图并将其用作tableView的footerview。添加点击识别器(或者您可以添加按钮),以便当用户点击它时,您可以修改您的dataSource。见下文:

protocol FooterDelegate {
    func requestedToDisplayMoreItemsFrom(footer: Footer, display:Bool)
}
class Footer: UIView {
    var delegate : FooterDelegate?
    var section : Int?

    override func awakeFromNib() {
        let tapReco = UITapGestureRecognizer(target: self, action: #selector(Footer.tapped))
        /*
        . setup
        . codes 
        . here
        .
        */
    }

    func tapped() {
        if let del = delegate {
            del.requestedToDisplayMoreItemsFrom(footer: self, display: true)
        }
    }
}

以下是如何使用它。我不会发布任何关于如何将其显示为footerView的代码,我很确定你可以自己编写,如果没有,你可以找到很多资源。

class ViewController: UIViewController, FooterDelegate {
    var dataSource = [[String],[String]]

    func requestedToDisplayMoreItemsFrom(footer: Footer, display: Bool) {
        if display {
            self.dataSource[footer.section!].append("item1")
            self.dataSource[footer.section!].append("item2")
            self.dataSource[footer.section!].append("item3")
        } else {
            self.dataSource[footer.section!].removeLast()
            self.dataSource[footer.section!].removeLast()
            self.dataSource[footer.section!].removeLast()
        }
            self.tableView.reloadData()
    }

答案 2 :(得分:0)

您可以使用此代码插入单元格

var cells: [Any] = [IndexPath(row: 1, section: 2), IndexPath(row: 2, section: 2)]
CATransaction.begin()
CATransaction.setCompletionBlock({() -> Void in
    tableView.reloadData()
})
tableView.beginUpdates()
tableView.insertRows(at: cells, with: .fade)
tableView.endUpdates()
CATransaction.commit()

要删除单元格,请使用代码..

var cells: [Any] = [IndexPath(row: 1, section: 2), IndexPath(row: 2, section: 2)]
CATransaction.begin()
CATransaction.setCompletionBlock({() -> Void in
    tableView.reloadData()
})
tableView.beginUpdates()
tableView.deleteRows(at: cells, with: .fade)
tableView.endUpdates()
CATransaction.commit()