problem with reload data from table view after come back from another view

Posted by user129677 on Stack Overflow See other posts from Stack Overflow or by user129677
Published on 2009-07-13T14:34:34Z Indexed on 2010/03/24 14:33 UTC
Read the original article Hit count: 422

I have a problem in my application. Any help will be greatly appreciated. Basically it is from view A to view B, and then come back from view B.

In the view A, it has dynamic data loaded in from the database, and display on the table view. In this page, it also has the edit button, not on the navigation bar. When user tabs the edit button, it goes to the view B, which shows the pick view. And user can make any changes in here. Once that is done, user tabs the back button on the navigation bar, it saves the changes into the NSUserDefaults, goes back to the view A by pop the view B.

When coming back to the view A, it should get the new data from the UIUserDefaults, and it did. I user NSLog to print out to the console and it shows the correct data. Also it should invoke the viewWillAppear: method to get the new data for the table view, but it didn't. It even did not call the tableView:numberOfRowsInSection: method. I place a NSLog statement inside this method but didn't print out in the console.

as the result, the view A still has the old data. the only way to get the new data in the view A is to stop and start the application.

both view A and view B are the subclass of UIViewController, with UITableViewDelegate and UITableViewDataSource.

here is my code in the view A :

- (void)viewWillAppear:(BOOL)animated {
    NSLog(@"enter in Schedule2ViewController ...");

    // load in data from database, and store into NSArray object

    //[self.theTableView reloadData];
    [self.theTableView setNeedsDisplay];
    //[self.theTableView setNeedsLayout];
}

in here, the "theTableView" is a UITableView variable. And I try all three cases of "reloadData", "setNeedsDisplay", and "setNeedsLayout", but didn't seem to work.

in the view B, here is the method corresponding to the back button on the navigation bar.

- (void)viewDidLoad {
    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(savePreference)];
    self.navigationItem.leftBarButtonItem = saveButton;
    [saveButton release];
}

- (IBAction) savePreference {
    NSLog(@"save preference.");

    // save data into the NSUSerDefaults

    [self.navigationController popViewControllerAnimated:YES];
}

Am I doing in the right way? Or is there anything that I missed?

Many thanks.

© Stack Overflow or respective owner

Related posts about reload

Related posts about uiviewcontroller