Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I speed up a UITableView?
    primarykey
    data
    text
    <p>I have a UITableView with about 400 cells in 200 sections and it's a little sluggish in responding to user interaction (scrolling, selecting cells.) I've made sure the methods for retrieving cells and header views do the bare minimum as it's running, and I don't think I'm doing anything out of the ordinary to make it slow. The cells and headers just have a background image and text. Has anyone else had this kind of problem, and do you know any way to make it run a little faster?</p> <p><strong>Edit:</strong> I'm offering a bounty because I'd love to get some useful feedback on this. I <em>don't</em> think the answer lies in a problem in my code. Instead I'm looking for strategies to re-engineer the UITableView so that it runs faster. I'm totally open to adding new code and I look forward to hearing what you guys have to say.</p> <p>Sluggishness is observed on both the simulator and my device, an iPhone 4. Here are my implementations of <code>viewForHeaderInSection</code> and <code>cellForRowAtIndexPath</code>, which are the only <code>UITableViewDelegate</code> methods implemented nontrivially. I am reusing cells and header views.</p> <pre><code>- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger) section { HaikuHeaderView* view= [m_sectionViews objectAtIndex:section]; NSMutableArray* array= [m_haikuSearch objectAtIndex:section]; Haiku* haiku= [array objectAtIndex:0]; [view.poetLabel setText:[haiku nameForDisplay]]; return view; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; cell.backgroundView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell gradient2.png"]]; // (Set up a bunch of label attributes in the cell...) } NSMutableArray* array= [m_haikuSearch objectAtIndex:indexPath.section]; Haiku* haiku = [array objectAtIndex:indexPath.row]; cell.textLabel.text = [haiku.m_lines objectAtIndex:0]; return cell; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload