iosuitableviewswiftui

Does the List in SwiftUI reuse cells similar to UITableView?


I am working on creating a dynamic list using SwiftUI. Does the SwiftUI List container reuse the cells similar to UITableView?


Solution

  • 💡 This answer was written for the SwiftUI 1 originally, but it is still correct for the latest SwiftUI version except that it's using UICollectionView underneath now.

    ✅ Yes, List is reusing its ListCoreCellHosts exactly like the way UITableView reuses its UITableViewCells.

    Reference:

    Investigating memory usage with Xcode shows that, when the number of the items is more than List could present at once, it just shows as much as it can and reuses them when they become occluded from the top or bottom of the list.

    enter image description here

    By tracing a single cell memory address, you can see it is reused over and over. Another exciting tidbit is that ListCoreCellHost uses a hosting view that may refer to UIKit internally. (Not known well because it lacks documentation)

    Demo