<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UITableView/reconfigureRows(at:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UITableView(im)reconfigureRowsAtIndexPaths:"
  },
  "title" : "reconfigureRows(at:)"
}
-->

# reconfigureRows(at:)

Updates the data for the rows at the index paths you specify, preserving the existing cells for the rows.

```
func reconfigureRows(at indexPaths: [IndexPath])
```

## Parameters

`indexPaths`

An array of <doc://com.apple.documentation/documentation/Foundation/NSIndexPath> objects identifying the items you want to update.

## Discussion

To update the contents of existing (including prefetched) cells without replacing them with new cells, use this method instead of [`reloadRows(at:with:)`](/documentation/UIKit/UITableView/reloadRows(at:with:)). For optimal performance, choose to reconfigure rows instead of reloading rows unless you have an explicit need to replace the existing cell with a new cell.

Your cell provider must dequeue the same type of cell for the provided index path, and must return the same existing cell for a given index path. Because this method reconfigures existing cells, the table view doesn’t call [`prepareForReuse()`](/documentation/UIKit/UITableViewCell/prepareForReuse()) for each cell dequeued. If you need to return a different type of cell for an index path, use [`reloadRows(at:with:)`](/documentation/UIKit/UITableView/reloadRows(at:with:)) instead.

If your cells are self-sizing, the table view resizes your cells after reconfiguring them.

By default, the table view animates any size or layout changes that are a result of reconfiguration. To reconfigure cells without animation, use `UIView`’s [`performWithoutAnimation(_:)`](/documentation/UIKit/UIView/performWithoutAnimation(_:)) when you call this method. Alternatively, to avoid animations when setting specific properties, use [`performWithoutAnimation(_:)`](/documentation/UIKit/UIView/performWithoutAnimation(_:)) in your cell configuration logic.

If your table view uses a custom implementation of `UITableViewDataSource`, use this method. If your table view uses a diffable data source, use [`reconfigureItems(_:)`](/documentation/UIKit/NSDiffableDataSourceSnapshot-swift.struct/reconfigureItems(_:)) (Swift) or [`reconfigureItems(withIdentifiers:)`](/documentation/UIKit/NSDiffableDataSourceSnapshotReference/reconfigureItems(withIdentifiers:)) (Objective-C) on `NSDiffableDataSourceSnapshot` instead.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)