If you are setting data only if cell==nil then that is your issue. UITable builds a cache of table view cells, only creating a new one if cell is nil. Therefore, you must set your data each time, i.e.
Outside of the cell==nil block The example below shows that process. First, grab a cell from the pool, if there isn't a free cell, create a new one. Set the cell's values for the appropriate row (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = tableView dequeueReusableCellWithIdentifier:CellIdentifier; if (cell == nil) { cell = UITableViewCell alloc initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier autorelease; } id someData = id_array objectAtIndex:indexPath.
Row cell.textLabel. Text = someData someString; return cell; }.
If you are setting data only if cell==nil, then that is your issue. UITable builds a cache of table view cells, only creating a new one if cell is nil. Therefore, you must set your data each time, i.e.
Outside of the cell==nil block. The example below shows that process. First, grab a cell from the pool, if there isn't a free cell, create a new one.
Set the cell's values for the appropriate row. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = tableView dequeueReusableCellWithIdentifier:CellIdentifier; if (cell == nil) { cell = UITableViewCell alloc initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier autorelease; } id someData = id_array objectAtIndex:indexPath. Row cell.textLabel.
Text = someData someString; return cell; }.
Thanks for the reply, I've added my method to the question, btw. I tried your suggestion, but it causes some weird issues with the data loaded to the cells. If I scroll down, the top cells suddenly show different data until they get reloaded.
– itai alter Jul 13 at 0:06 The wrong data being displayed is actually a reused cell, which then gets updated from the server. If I empty the labels and image, then instead of showing wrong data, it shows nothing and then loads. What I would like to do is load the 14 cells and not reload them when scrolling up & down... is that possible somehow?Thanks.
– itai alter Jul 13 at 0:53 For that case, your controller should preload the data and store it in an array. The the cell data should pull from this cached array as needed. – MarkPowell Jul 13 at 1:07 Thanks, Mark.
Now I add the cell to an Array if it's the 1st time it's created, and reuse it from the Array if it's already there. So if I scroll down it shows an Activity Indicator on the the new cells, but if I scroll back up, it doesn't reload the upper cells. That's what I needed :) Thanks!(now I just need to double check if I handled the memory usage correctly) – itai alter Jul 13 at 14:03.
When running the app, the UITableView is loading the visible rows 0,1,2,3,4 (cell height is 70px). But it does request new data for row 5, which is not visible (and not loaded) when the app first runs. Anyone have any idea why is this happening?
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.