一尘不染

如何在不重新加载UITableView或单个单元格[Swift]的情况下增加单行高度?

swift

我想扩大 行高
并显示其中的内容。我在想要的视图中显示我的内容,当我点击一个单元格时,它应该像下图所示那样展开,但无需重新加载UITableview。

图片

到目前为止,我一直在尝试。

1)我尝试在内部扩大视图,但是没有用

2)我尝试添加rowAtIndex变得越来越复杂

3)我尝试更改更改行高并在索引处滚动,效果很好,但我不想那样做。(不好的事情,我必须重新加载表视图)

但是我得到了很多答案,但是它没有解决我的问题,因为如果我在特定索引处刷新数组(数据源)中的数据会不断更新,那么索引处的数组中的数据可能会有所不同,可能会显示错误的输出。

说明

我的意思是我有一个结构数组,一旦数据更改并重新加载表视图,我会继续在后台对其进行更新,但是如果我重新加载了索引处的行,并且如果数组中的数据已经更改,则可能显示重复正确吗?所以我只想更改行的高度而无需重新加载。

重新加载的问题是

而扩展数据可能会改变数组中的数据。所以我已经创建了一个视图,一旦我点击单元格的高度应该从45更改为76,并且再次点击从最后一个单元格76到45以及此单元格45到76的其他单元格,所有信息都会被预加载。


阅读 231

收藏
2020-07-07

共1个答案

一尘不染

桌子高度只能通过代表来更改,没有其他方法可以实现,我将向您展示一个简单的方法。

声明变量

var selectedIndex = NSIndexPath()

didSelectRowAtIndexPath 内部重新加载选定的单元格

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        selectedIndex = indexPath
        tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)

    }

内部 heightForRowAtIndexPath 返回大小

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath == selectedIndex {

        return 100 //Size you want to increase to
    }
    return 50 // Default Size
}
2020-07-07