您将如何实现仅显示所选单元格的表格?

时间:2015-07-10 11:29:34

标签: ios swift uitableview

我在每个表格单元格上都有一个按钮被选中:

@IBAction func tickAction(sender: UIButton) {
    println("SSSS")

    if (sender.selected) {
        sender.setImage(UIImage(named:"Unchecked.png"), forState: .Normal)
        sender.selected = false

    }
    else {
        sender.setImage(UIImage(named:"Checked.png"), forState: .Normal)
        sender.selected = true



    }
}

我正试图找到一种方法来制作一个只显示所选单元格的表格。

3 个答案:

答案 0 :(得分:0)

所以,通常情况下,我们有一个数组,我们用它来显示数据源。

在这里,您需要第二个数组来跟踪已检查的单元格。选择单元格后,将其转储到此数组中。取消选中后,将其从此数组中删除。

现在,根据您是要显示所有单元格还是仅显示所选单元格,确定您正在使用哪个数组,因此您将拥有分散在整个数据源/委托方法中的逻辑:

var dataSourceArray: Array<CustomDataObject>
if showingSelectedOnly {
    dataSourceArray = self.selectedCells
} else {
    dataSourceArray = self.allCells
}

然后使用此数组来处理节中的行数,索引路径的单元格等

答案 1 :(得分:0)

您不应该在视图中拥有所选状态,而是在模型中。

让我们说你当前的UITableView有一个数据源是一系列的文章,我们称之为articles,让我们说一个文章是:

class Article {
    let name: String
    var selected: Bool = false

    init(name: String) {
        self.name = name
    }
}

//Example
let a = Article(name: "Article A")
let b = Article(name: "Article B")
let c = Article(name: "Article C")
b.selected = true

let articles = [a, b, c]

然后,只有所选文章的第二个UITableView将有一个数据源:

let selectedArticles = articles.filter{ $0.selected } // Only contains 'b'

答案 2 :(得分:0)

为什么不将包含选定属性的列放入原始数据表中,而不是使用单独的表?