1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

How force TableView redraw itself

Discussion in 'iPhone/iPad Programming' started by gandalfbp, Nov 6, 2009.

  1. macrumors newbie

    #1
    Hi,

    I have a TableView what loads it's cells from XIB's:
    Code:
    - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        static NSString *MyIdentifier = @"MyIdentifier2";
    	
    	GeoLoc *aGeoLoc = [appDelegate.ClosestArray objectAtIndex:indexPath.row];
    	if (haveStat) {
    		GeoLocCellWithSlots *aCell = (GeoLocCellWithSlots *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    		if (aCell == nil){
    			[[NSBundle mainBundle] loadNibNamed:@"GeoLocCellWithSlots" owner:self options:nil];  
    			aCell = geoCellWithSlots;
    			self.geoCellWithSlots = nil;
    		}
    		[aCell setGeoLoc:aGeoLoc];
    		return aCell;
    	}
    	else {
    		GeoLocCell *aCell = (GeoLocCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    		if (aCell == nil){
    			[[NSBundle mainBundle] loadNibNamed:@"GeoLocCell" owner:self options:nil];
    			aCell = geoCell;
    			self.geoCell = nil;
    		}
    		[aCell setGeoLoc:aGeoLoc];
    		return aCell;
    	}
    }
    
    The two cells are different height. I set up the list's rowHeight in the viewDidLoad. The list contains only one kind of cells: either short ones, or tall ones, they are not mixed. If I set up the list from the taller, than the shorter, the cells are not redrawn correctly: some garbage will stay from the taller cell (the red, green, purple text).
    How can I force the list to redraw itself completly?
    What did I made wrong?
     

    Attached Files:

    • x.png
      x.png
      File size:
      73.3 KB
      Views:
      27
  2. Moderator

    dejo

    Staff Member

    #2
    I don't think you want to be setting row heights in viewDidLoad. That's too early. You might wanna try using UITableViewDelegate's tableView:heightForRowAtIndexPath: method.
     
  3. macrumors 68030

    PhoneyDeveloper

    #3
    You need different identifiers for the two kinds of cells.
     
  4. macrumors newbie

    #4
    Oh, my dearest friend, you saved my life. May thanks for the finding!

    Peter
     

Share This Page