Disable uitableview disable reuse when scrolling in iOS

I want to disable reloading table view when scrolling. Now, my app when user scroll the uitableview, cellForRowAtIndexPath has been recalled.

Things in viewDidLoad

[listingTableView registerNib:[UINib nibWithNibName:@"TripCardCell" bundle:nil] forCellReuseIdentifier:[TripCardCell cellID]];

Things in cellForRowAtIndexPath

if (cell == nil) {
        cell = [[TripCardCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[TripCardCell cellID]];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

Upvotes: 2

Views: 5410

Answers (1)

Nischal Hada
Nischal Hada

Reputation: 3288

UITableViewCell Class Reference

The reuse identifier is associated with a UITableViewCell object that the table-view’s delegate creates with the intent to reuse it as the basis (for performance reasons) for multiple rows of a table view. It is assigned to the cell object in initWithFrame:reuseIdentifier: and cannot be changed thereafter. A UITableView object maintains a queue (or list) of the currently reusable cells, each with its own reuse identifier, and makes them available to the delegate in the dequeueReusableCellWithIdentifier: method.

Advantage of reuseIdentifiers

Using dequeueReusableCellWithIdentifier for the tableView, you can greatly speed things up. Instead of instantiating a lot of cells, you just instantiate as many as needed, i.e. as many that are visible (this is handled automatically). If scrolling to an area in the list where there are "cells" that haven't got their visual representation yet, instead of instantiating new ones, you reuse already existing ones.

disable reloading tableview when scrolling

You cannot block the cellForRowAtIndexPath: from calling when scrolling the tableview. If something need not happen every time, You may keep it in if condition.

 if (cell == nil)
    {
        //Functionality goes here when it not needed to happen every time.
    }

Upvotes: 0

Related Questions