Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift中单击UITableView中的单元格时折叠部分_Ios_Swift_Uitableview - Fatal编程技术网

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

Ios 在swift中单击UITableView中的单元格时折叠部分,ios,swift,uitableview,Ios,Swift,Uitableview,我有一个UITableView,其中节数和这些节下的单元数来自我的服务。节的数量是动态的,并且节下包含动态单元格。取决于来自服务的数据。我想在单击单元格时折叠部分。单击每个部分下的单元格时,每个部分都应折叠。我怎么能这样呢?我已经为它搜索了很多,但大多数结果显示,当我们点击部分,它展开和折叠。但我想在单元格点击时折叠部分。我在节头中放置数据的代码如下: func numberOfSections(in tableView: UITableView) -> Int { if tab

我有一个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
    }
}

当您单击单元格时,您将从
indexPath.section
中获得section。您可以更新viewState以设置节折叠标志,然后重新加载表。设置折叠标志的节为该节指定行数0


若表中一次只有一个部分折叠,那个么处理逻辑就很容易了。

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

var selectedSection: Int!
点击单元格时,将单元格的节索引指定给selectedSection并重新加载该节。如果要解压剩余的部分,只需重新加载整个tableview,而不是只重新加载一个部分

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

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

如何更新viewState?在viewForHeader委托中的何处重新加载表@aa如果没有视图状态,则取一个全局变量,即
collapseSection
,如下所述。若要在第一次折叠任何部分,请将该值设置为该变量。然后需要将
indexPath.section
collapseSection
中的
numberOfRowsInSection
方法进行比较。如果节匹配,则返回1 else
countOfRows
。这里的
countOfRows
将来自数组/字典,因为您有动态数据。通过返回1作为行数,一个单元格将始终可见。如果需要,此可见单元格可以帮助您展开部分。在
collapseSection
中设置值后,您可以使用
tableView.reloadData()
didSelectItemAtIndexPath
方法中重新加载表。请给出我没有得到的任何示例@aainajainit重新加载表视图,但不折叠它@HariSo,您对折叠动画有问题,对吗?如果您重新加载整个表数据,则很难实现动画。尝试用动画重新加载一个部分。tableView.reloadSections(IndexSet(integer:selectedSection),with:.automic)我已经完成了此操作,它更改了它的位置,但没有正确地关闭该部分@您还需要维护以前选择的节。当用户选择单元格时,您需要重新加载选定部分和以前选定的部分。用动画重新加载两者。