PDA

View Full Version : UITableview Reload Data




jjardim
Sep 23, 2010, 10:47 AM
-iPad Application-
I have a tableview with custom tableview cells with some dynamic data in it.

Example
Name
Tasks 1 of 4 complete

on the same screen I have a check box that completes the task. I am unable to get the tasks to change from 'Tasks 2 of 4 complete' unless I manually SCROLL the cell off the screen and then back on - I've tried [tableview reloadData] no luck. Is there a method to redraw the visible cells?

Thanks!
Jason Jardim
www.MacSpots.com



Luke Redpath
Sep 23, 2010, 11:55 AM
You can also use - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation but if reloadData isn't working then I'm not sure that will either.

Is the cell that displays "x of y tasks complete" a custom subclass of UITableViewCell or are you using one of the built-in styles?

dejo
Sep 23, 2010, 12:00 PM
reloadData should do the trick. In fact, it really only reloads visible cells. But perhaps some code, especially your tableView:cellForRowAtIndexPath:, would better help us diagnose.

PhoneyDeveloper
Sep 23, 2010, 12:21 PM
If you look at Apple's tableViewSuite sample code it does some things like this. One of the examples shows the time zones around the world and displays an icon that indicates whether it's day or night at each location and updates this dynamically as time changes.

Sykte
Sep 23, 2010, 03:14 PM
-iPad Application-
I have a tableview with custom tableview cells with some dynamic data in it.

Example
Name
Tasks 1 of 4 complete

on the same screen I have a check box that completes the task. I am unable to get the tasks to change from 'Tasks 2 of 4 complete' unless I manually SCROLL the cell off the screen and then back on - I've tried [tableview reloadData] no luck. Is there a method to redraw the visible cells?

Thanks!
Jason Jardim
www.MacSpots.com


Normally you want to use reloadRowsAtIndexPaths:withRowAnimation: (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITableView_Class/Reference/Reference.html). Tableview reloadData redraws all visible views which can be heavy. However if you are not getting the update with reloadData, reloadRowsAtIndexPaths will not help. How exactly are you updating your datasource.

umm just a shot in the dark but but are you doing [tableView reloadData] or [self.tableView reloadData].

Also make sure you're updating the dataSource before reloading the table.