我不知道为什么结果不是我的想法

时间:2015-07-30 01:11:43

标签: ios swift

这是我的代码。我想要做的是在我选择所有部分的第一行之一时显示细节(每个部分的最后3行)。

var People是一个Set类型,它的值是[] default,当选择了一行时,它会将当前部分追加到此Set,然后当我们返回numberOfRows时,我们可以依赖于People Set并决定哪个该部分应该只显示一行,而且应该是4行。

但结果是我选择的numberOfRowsInSection总是为1行。

任何人都可以告诉我为什么会这样?

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{


    if Peoples.isEmpty {
        return 1
    }
    else{
        if Peoples.contains(section) {
            return 4
        }
        else {
            return 1
        }

    }

}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    TV.deselectRowAtIndexPath(indexPath, animated: true)
    if Peoples == []{
        Peoples.insert(indexPath.section)
    }
    else {
        if Peoples.contains(indexPath.section){
            Peoples.remove(indexPath.section)
        }
        else {
            Peoples.insert(indexPath.section)
        }
    }

    println("\(Peoples)")
}

1 个答案:

答案 0 :(得分:1)

好的,没有人可以帮助我,但我已经解决了这个问题。因为我在选择AninAtindexPath时忘了重新加载数据。

这是我更新的工作代码。

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{


    if Peoples.isEmpty {
        return 1
    }
    else{
        if Peoples.contains(section) {
            return 4
        }
        else {
            return 1
        }

    }

}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    TV.deselectRowAtIndexPath(indexPath, animated: true)
    if Peoples == []{
        Peoples.insert(indexPath.section)
    }
    else {
        if Peoples.contains(indexPath.section){
            Peoples.remove(indexPath.section)
        }
        else {
            Peoples.insert(indexPath.section)
        }
    }
    tableView.reloadData()
    println("\(Peoples)")
}