在swift中单击UITableView中的单元格时折叠部分

时间:2018-05-17 16:47:26

标签: ios swift uitableview

我有一个UITableView,其中这些部分下的单元格数和单元格数来自我的服务。部分的数量是动态的,并包含动态单元格。取决于来自服务的数据。我想在单击单元格时折叠部分。单击下面的单元格时,每个部分都应折叠。我怎么能崩溃呢?我已经搜索了很多,但是当我们点击它展开和折叠的部分时,大多数结果都会显示出来。但我想折叠单击单元格的部分。我在段标题中放置数据的代码就是这个,

func numberOfSections(in tableView: UITableView) -> Int {

    if tableView == resMenuTableView{

        return subCategoryModel!.count
    }
    else
    {
        return AddonCategoryModel!.count
    }
}
 func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    if tableView == resMenuTableView{

        return subCategoryModel![section].subCatName

    }
    else
    {
         return AddonCategoryModel![section].name
    }
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    if tableView == resMenuTableView{
        return subCategoryModel![section].items.count
    }
    else
    {
        return AddonCategoryModel![section].addonItems.count
    }
}

2 个答案:

答案 0 :(得分:0)

当您点击单元格时,您将获得indexPath.section的部分。您可以更新viewState以设置节折叠标志,然后重新装入表。设置了折叠标志的部分为该部分指定了行数0。

如果一次只有一个部分在表格中崩溃,那么你就很容易处理逻辑。

答案 1 :(得分:0)

在不初始化的情况下获取全局Int值。

var selectedSection: Int!

在单元格上轻敲时,将单元格的节索引指定给selectedSection并重新加载该节。如果你想解开剩下的部分,只需重新加载整个tableview,而只重新加载一个部分。

selectedSection = indexPath.section
tableView.reloadSections(IndexSet(integer: selectedSection), with: .top)

在numberOfCellsForSection方法中,检查section和selectedSection是否相同。如果它们相同,则需要折叠该部分,这意味着您需要为原始行计数。